现在,我们知道 Java 8 在接口中引入了默认方法和静态方法。
最初在 Java 中引入接口是为了避免在 C++ 中出现的多继承中 的菱形问题。
但是随着 Java 8 在接口中引入默认方法,现在 Java 也引入了菱形问题,在之前的版本中它避免了这个问题。
默认方法不是强制需要被覆盖的。
但是当使用接口出现菱形问题时,实现这些接口的类必须覆盖默认方法。
所以现在,我的脑海里有三个问题:
- 为什么需要有默认方法?
- 难道我们不能通过类本身进行多重继承,而不是在接口中使用默认方法吗?
- 如果他们必须在 Java 8 中引入它,那么在以前的版本中需要避免钻石问题吗?
任何好的解释或解释的任何链接?
PS我没有在互联网上找到任何包含任何好文章的链接。
他们只是说抽象类给了你更多的具体性。
如,抽象类可以有构造函数,但接口不能。
再说一次,我想知道,如果抽象类更具体,并且可以有构造函数,
而且无论如何Java已经引入了菱形问题,为什么我们现在应该有接口?抽象类作为独立的多重继承难道不够好吗?