知識回顧9 繼承和多型的問題3

2021-06-05 01:42:03 字數 1270 閱讀 2284

呼叫乙個方法,傳遞乙個引用型別資料,即物件進去,遵循下面規則:

(1)、如果該方法的引數,正好是這個物件的引用,那麼就呼叫這個方法。

(2)、如果沒有正好對這個物件的引用,那麼就找引數是其父類引用的方法(如果是介面,就找相應的介面引用),如果父類也沒有,就找父類的父類。。。直到找不到,報錯。

那麼,記住這一點,總和前面父類子類方法呼叫的問題,就無往而不利了。

看下面的一道題

public class demo2

}class a

public string show(a obj)

}class b extends a

public string show(a obj)

}class c extends b

class d extends b

答案和解釋

1、第1行的結果為   a  and  a

因為傳遞進去的是乙個b類物件,而a類中沒有b類物件相應的show方法,那麼就找b類物件的父類引用,所以為a   and    a

2、第2行的結果為   a  and  a

原因和1相同

3、第3行的結果為   a  and  d

因為傳遞的是乙個d物件,因為有與d類物件相應的show方法,所以呼叫相應的show方法,輸出  a    and   d

4、第4行的結果為   b  and  a

a2是父類引用子類的物件,雖然傳遞進來的引數是b類物件,而子類b中也有相應的show方法,但是父類引用不能呼叫它,因為它是子類獨有的方法。所以只能在自己類裡面的方法裡面找,找到了這個方法

public string show(a obj)

又因為子類重寫了這個方法

public string show(a obj)

所以呼叫子類重寫的方法,所以是b  and   a;

5 、第5行的結果為   b  and  a

原因和4類似。

6、第6行的結果為  a  and  d

父類的引用,在父類中找到了與d類相應的show()方法,所以呼叫

public string show(d obj)

輸出結果為a  and   d;

7、第7行的結果為  b and  b

這個就不解釋了

8、第7行的結果為  b and  b

不解釋9、第9行的結果為  a  and  d

因為b從a類那裡繼承了 public string show(d obj)

所以呼叫這個方法,結果是a   and    d

9 繼承和多型

class childclass parentclass python 的所有類都派生自object類。如果定義乙個類的時候沒有指定它的父類,那麼它的父類預設就是object類。熟悉object類的方法是十分重要的,主要看以下四個方法 loan loan 1,1,1,smith print loan...

繼承 多型的相關知識

一 繼承 在php中,使用extends實現繼承。作用 如果我們不使用繼承,就要寫很多重複的 二 繼承的構造方法 1 子類繼承父類時,子類沒有構造方法,例項化子類物件時,會執行父類的構造方法。子類如果有自己的構造方法,例項化子類物件時,只會自動執行子類自己的構造方法。2 子類的構造方法有兩個引數,所...

java筆記3繼承和多型

繼承和訪問控制符?無條件繼承有條件訪問?子類能夠繼承父類中public和protected成員 子類能夠繼承父類中default成員,但 子類與父類必須位於同一包內 子類不能繼承父類的private成員 子類不能直接使 用父類隱藏的成員變數和重寫的父類方法 super 子類通過繼承的父類的方法來訪問...