为什么要创建抽象类和接口?

Pau*_*aul 8 java abstract-class interface multiple-inheritance

好吧,我打算问一下有什么区别,但之前已经回答了.但现在我问他们为什么会产生这些差异呢?(我在这里讲的是java,我不知道是否同样适用于其他语言)

这两件事看起来非常相似.抽象类可以定义方法体,而接口则不能,但可以继承多个接口.那么他们为什么不(他们'我们的意思是Sun,当他们编写Java时)做了一件事情,你可以编写一个方法体,这种类型可以被一个类不止一次地继承.

没有能够编写方法体,或者延伸多次,我没有看到它有什么优势吗?

Chr*_*bek 10

因为允许类继承同一方法签名的多个实现会导致一个明显的问题,即应该在运行时使用哪个.

Java通过仅支持接口的多重继承来避免这种情况.每个接口中声明的签名可以更容易组合(Java基本上使用所有方法的并集)


Pon*_*gge 5

C++中的多重继承会导致语义模糊,如钻石继承问题.MI非常强大,但后果复杂.

使接口成为一种特殊情况也提高了概念作为信息隐藏手段和降低程序复杂性的可见性.在C++中,定义纯抽象基础是成熟程序员的标志.在Java中,您会在程序员发展的早期阶段遇到它们.