1:多型的定義
乙個物件變數(例如:變數e)可以引用多種實際型別的現象被稱為多型(polymorphism)。在執行時能夠自動的選擇呼叫哪個方法的現象被稱為動態繫結(dynamic binding)。
2:多型只適用於方法,不適用於域。
//父類
class father
}//子類
class son extends father
public int getsuperfield()
}//測試類
public class testoverride
}
//測試結果
super.field=0, super.getfield()=1
son.field=1, son.getfield()=1, son.getsuperfield()0
3:多型即是父類或者介面型別的引用指向子類或實現介面型別的物件;
4:從物件的記憶體角度來理解試試.
假設現在有乙個父類father,它裡面的變數需要占用1m記憶體.有乙個它的子類son,它裡面的變數需要占用0.5m記憶體.
現在通過**來看看記憶體的分配情況:
father f = new father();//系統將分配1m記憶體.
son s = new son();//系統將分配1.5m記憶體!因為子類中有乙個隱藏的引用super會指向父類例項,所以在例項化子類之前會先例項化乙個父類,也就是說會先執行父類的建構函式.由於s中包含了父類的例項,所以s可以呼叫父類的方法.
son s1 = s;//s1指向那1.5m的記憶體.
father f1 = (father)s;//這時f1會指向那1.5m記憶體中的1m記憶體,即是說,f1只是指向了s中例項的父類例項物件,所以f1只能呼叫父類的方法(儲存在1m記憶體中),而不能呼叫子類的方法(儲存在0.5m記憶體中).
son s2 = (son)f;//這句**執行時會報classcastexception.因為f中只有1m記憶體,而子類的引用都必須要有1.5m的記憶體,所以無法轉換.
son s3 = (son)f1;//這句可以通過執行,這時s3指向那1.5m的記憶體.由於f1是由s轉換過來的,所以它是有1.5m的記憶體的,只是它指向的只有1m記憶體.
Java特性多型
簡單說 就是乙個物件對應著不同型別.多型在 中的體現 父類或者介面的引用指向其子類的物件。1 2 3物件的多型性。45 class 動物6 78class 貓 extends 動物9 1011 class 狗 extends 動物 12 1314 1516 貓 x new 貓 1718 動物 x n...
java特性之多型
在這裡寫下自己對多型的一點理解 多型的意思就是子類存在和父類方法相同的方法,但是方法實現不一樣,舉個例子 你和你爸都有理髮這個行為,但是你們的理完發髮型就可能不一樣。總的來說就是相同方法不同實現。多型需要滿足哪些條件呢?第乙個,子類必須重寫父類的方法 第二個,要有向上轉型的過程 先把 貼上來 父類p...
Java的多型特性
學習筆記 簡單說 就是乙個物件對應著不同型別。多型在 中的體現 父類或者介面的引用指向其子類的物件。多型的好處 提高可維護性 由多型前提所保證 提高了 的擴充套件性 多型的弊端 無法直接訪問子類特有的成員。也就是說前期定義的內容不能使用 呼叫 後期子類的特有內容。多型的前提 1,子父類的繼承關係 2...