1. 程式人生 > 其它 >java的單繼承多實現問題

java的單繼承多實現問題

為什麼java類不支援多繼承(介面支援):

(1)子類繼承父類中有多個相同的成員變數,子類在使用的時候不知道呼叫父類的哪一個成員變數。

(2)子類繼承父類中有多個相同的方法,若子類未覆蓋父類方法,在子類呼叫時不知道呼叫父類的哪一個方法。

如果一個類實現了多個介面就沒有這樣的問題了嗎?

在java8之前的定義:

(1)介面定義的變數都是常量,編譯時就確定呼叫關係。

(2)方法呼叫時始終呼叫實現類的方法,不存在歧義。

不過,java8之後介面可以有預設方法,一個類實現多個介面有相同的預設方法咋辦嘞,只能要求子類做出選擇(重寫該方法)。

必須實現m2方法,不然會報錯。

interface C extends
A,B{ @Override default void m2() { }

public interface A {
public static final String constanct="a1";
void m1();
default void m2() {
System.out.println("a#m2");
}

public interface B {
public static final String constanct="a2";
void m1();
default void m2() {
System.out.println("B#m2");
}
 

 參考部落格:https://blog.csdn.net/qq_31142553/article/details/106036690