为什么Java类不支持多继承而接口可以?

每个用JAVA的人都知道java不支持多继承,但为什么呢?无论从抽象还是多态等层面思考,感觉都是行得通的,那么为什么不支持呢?

为什么Java类不支持多继承而接口可以?

文章插图
 
很多人都是分析一旦一个类继承了多个父类,那么父类中如果有相同的成员变量和方法,就不好处理,如下图,这就是Diamond问题
GrandParent f()//Parent1 f()Parent2 f()//Son f()那么此时子类如果我们只引用 f(),编译器将无法决定它应该调用哪个 f()方法,但此说明不足以让人信服,比如可以强制要求子类必须覆写f()方法 。
Java之父,James Gosling在1995年的一份白皮书中给出了关于为什么不支持多继承


    推荐阅读