java 究竟为什么引入接口(interface)?

假如允许类的多继承,接口似乎就没有存在的必要性了。

java究竟为什么采取了 interface+class这样“臃肿”的设定,而不是像c++一样,只使用class呢?

延伸问题:
在实际编程中,接口究竟起到了什么作用?
类的多继承究竟有什么问题,导致java舍弃了它?

你好,以下是我的一些理解:
首先继承的意思是继承一个类,继承一个类的作用就是扩展这个类的功能或者是实现代码重用等,《Effective Java》中讲过继承,说复合优先于继承,还有要么为继承而设计,并提供文档说明,要么就禁止继承。为什么这么说,因为继承会打破封装性,子类依赖超类的实现细节的话,如果超类后期维护修改,子类就会出现问题。真正应该继承的时候应当是有is-a的关系时。首先,如果是可以多继承,菱形继承问题解决会非常复杂,并且上面说的问题出现的概率大大增加。接口就不一样,因为它是抽象的,不能有实现细节,它的实现类不会对它产生依赖,根据这一点,接口也优先于抽象类(允许某些方法的实现)。

单就我的理解
多继承会导致菱形继承的问题,即B,Cextends A
D extends B,C.这里D就会继承来自B和C的A中的属性,造成属性指代不明
而接口只承认抽象方法,static和final属性方法,也就不存在菱形继承的问题了
继承——菱形继承_Y~哈哈哈的博客-CSDN博客_菱形继承 一、菱形继承是什么?一个派生类有多个基类,多个基类又由同一个类派生,用下列代码来解释class A{public: int _a;};class B : public A{public: int _b;};class C : public A{public: int _c;};class D: public B,public C{public: ... https://blog.csdn.net/YL970302/article/details/86545467

interface是为了防止前端和后端打架。或者A项目组和B项目组的人打起来设计的。

C++其实也有类似interface的功能,C++把函数定义成纯虚函数就和interface一样了。
interface的作用更多的是在软件架构上的应用,架构设计上只考虑功能不考虑实现。

如果有多继承的话,代码才会出现臃肿,可能你只需要一个类的某个方法,但是你却实现了它所有的方法。
接口就是把一些共性的方法或者特征抽象出来,能让你更好的去思考设计业务。

我不知道c++怎么处理这个问题的,
假设A类和B类同时存在方法func,此时C同时继承A和B,调用父类的方法func,它此时会使用哪个爸爸的方法?

接口是定义方法和属性,而不注重具体实现。
问题就在于,java中不支持多继承。
你对类和接口的理解也太表面了,当你理解设计模式的时候,你就知道区分多大。