Java8之前对于接口只能拥有方法声明和常量的设计,保证了只能存在声明多继承,避免了实现多继承情况的出现.
2.成员命名冲突 与实现多继承类似,多继承时,一个类会拥有从多个父类继承的多个同名成员变量,同样存在着歧义性的问题需要解决...五、默认方法(default method)
Java8为了兼顾兼容性和接口的增加方法,被迫加入了默认方法(default method)的特性,允许接口定义默认方法的方法实现....,那么子接口的优先级最高:函数签名相同时,优先选择拥有最具体实现的默认方法的接口,即如果B继承了A,那么B就比A更具体.
3)最后,如果还是无法判断,继承了多个接口的类必须显式覆盖和调用期望的方法,显式地选择使用哪一个默认方法的实现...Java8对此的设计是符合一直以来自身应对菱形继承和歧义性的设计思路的.
也许有的人不知道Java什么时候需要解决菱形继承和歧义性的问题....事实上,《Effective Java》早就在第18条:接口优于抽象类中提出过这方面的担忧,并且建议:
简而言之,接口通常是定义允许多个实现的类型的最佳途径.这条规则有个例外,即当演变 的容易性比灵活性和功能更为重要的时候