因为面向对象语言中继承一词与现实世界中的父子关系相差甚远.
面向对象语言中继承父类的子类对象能直接使用父类的方法和属性.
现实世界中父亲拥有年龄属性,孩子难道继承了父亲的年龄属性吗?...Java8之前对于接口只能拥有方法声明和常量的设计,保证了只能存在声明多继承,避免了实现多继承情况的出现.
2.成员命名冲突 与实现多继承类似,多继承时,一个类会拥有从多个父类继承的多个同名成员变量,同样存在着歧义性的问题需要解决...出于自由性和可用性考虑,一个类对于父类构造函数的执行顺序应该拥有指定的机制(C++就是用继承声明的顺序来指定构造函数执行顺序),然而复杂情况下,程序员仍旧难以理解整个实例化过程中的构造函数执行顺序,容易出错...由于接口中不能含有方法的实现,只能含有方法的声明,这一限制使得一个接口对外发布后,完全失去了扩展性.
一旦你给一个已经发布的接口增加了新的方法,那么所有的实现类都会遭到破坏....这已经不是难度的问题了,而是完全不可能完成的任务.
即使是Java委员会这样全是优秀的团队,依然没法完成这点,更别提其他程序员了.