繼承與多型 動手動腦

2022-08-12 21:24:13 字數 2160 閱讀 4431

1.**和測試結果如下

2.我的猜想:

parent.printvalue(),myvalue=100

child.printvalue(),myvalue=200

parent.printvalue(),myvalue=101

child.printvalue(),myvalue=200

child.printvalue(),myvalue==201

.程式執行的結果是:

解釋:第三行輸出的是200,原因是:

parent.myvalue++相當於parent.myvalue+parent.myvalue即兩次呼叫parent的方法,故輸出應該是200

總結:物件是子型別的,它就呼叫子型別的方法,是父型別的,它就呼叫父型別的方法。

這個特性實際上就是物件導向「多型」特性的具體表現。

如果子類與父類有相同的字段,則子類中的字段會代替或隱藏父類的字段,子類方法中訪問的是子類中的字段(而不是父類中的字段)。如果子類方法確實想訪問父類中被隱藏的同名字段,可以用super關鍵字來訪問它。

如果子類被當作父類使用,則通過子類訪問的字段是父類的!

思考:為什麼子類的構造方法在執行之前,必須呼叫父類的構造方法?能不能反過來?為什麼不能反過來?

建構函式是一種特殊的方法,主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句。特別的乙個類可以有多個建構函式,可根據其引數個數的不同或引數型別的不同來區分它們,即建構函式的過載。建構函式的主要功能用於在類的物件建立時定義初始化的狀態。

構造乙個物件,先呼叫其構造方法和成員變數。

子類擁有父的成員變數和成員方法,如果不呼叫,則從父類繼承而來的成員變數和方法得不到正確的初始化。

不能反過來呼叫也是這個原因,因為父類根本不知道子類有什麼變數而且這樣一來子類也得不到初始化的父類變數,導致程式出錯!

2.我的猜想:

parent.printvalue(),myvalue=100

child.printvalue(),myvalue=200

parent.printvalue(),myvalue=101

child.printvalue(),myvalue=200

child.printvalue(),myvalue==201

.程式執行的結果是:

解釋:第三行輸出的是200,原因是:

parent.myvalue++相當於parent.myvalue+parent.myvalue即兩次呼叫parent的方法,故輸出應該是200

總結:物件是子型別的,它就呼叫子型別的方法,是父型別的,它就呼叫父型別的方法。

這個特性實際上就是物件導向「多型」特性的具體表現。

如果子類與父類有相同的字段,則子類中的字段會代替或隱藏父類的字段,子類方法中訪問的是子類中的字段(而不是父類中的字段)。如果子類方法確實想訪問父類中被隱藏的同名字段,可以用super關鍵字來訪問它。

如果子類被當作父類使用,則通過子類訪問的字段是父類的!

思考:為什麼子類的構造方法在執行之前,必須呼叫父類的構造方法?能不能反過來?為什麼不能反過來?

建構函式是一種特殊的方法,主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句。特別的乙個類可以有多個建構函式,可根據其引數個數的不同或引數型別的不同來區分它們,即建構函式的過載。建構函式的主要功能用於在類的物件建立時定義初始化的狀態。

構造乙個物件,先呼叫其構造方法和成員變數。

子類擁有父的成員變數和成員方法,如果不呼叫,則從父類繼承而來的成員變數和方法得不到正確的初始化。

不能反過來呼叫也是這個原因,因為父類根本不知道子類有什麼變數而且這樣一來子類也得不到初始化的父類變數,導致程式出錯!

動手動腦(繼承與多型)

1.為什麼子類的構造方法在執行之前,必須呼叫父類的構造方法?能不能反過來?為什麼不能反過來?構造方法主要用來建立物件時初始化物件,即為物件變數賦初始值。建立乙個物件,先呼叫構造方法來進行初始化,子類擁有父類的成員變數和方法,如果不調父類的構造方法,則從父類繼承而來的成員變數和方法得不到正確的初始化。...

06 繼承與多型 動手動腦

1.怎樣判斷物件是否可以轉換?可以使用instanceof運算子判斷乙個物件是否可以轉換為指定的型別。例 1 public class testinstanceof 220 程式執行結果 2.現有三個類 class mammal class dog extends mammal class cat ...

繼承與多型動手動腦總結

一 繼承條件下的構造方法呼叫 程式 class grandparent public grandparent string string class parent extends grandparent class child extends parent public class testinhe...