引言:
本來想在繼承那一博文中把多型寫完的,但隨著繼承篇幅的增大,再加上多型這個讓人看上去很厭煩、很複雜的問題,會是整個篇幅變得可讀性極差,故靈氣此文。
多型:可以理解為事物存在的多種體現形態
1、多型的基本體現
父類的引用指向了自己的子類物件
父類的引用也可以接受自己的子類物件
2、多型的前提
必須是類與類之間有關係,要麼繼承,要麼實現
通常還有乙個前提,存在覆蓋
3、多型的好處
多型的出現大大提高了程式的擴充套件性
4、多型的弊端
提高了擴充套件性,但是只能使用父類的引用訪問父類的成員
5、多型的應用
6、多型的出現**中的特點(多型使用的注意物件)
空談多型,太過抽象,簡單說說執行結果,也不好理解,下面通過測試**中的例子說明問題。
/*
動物貓、狗
*/abstract class animal
class cat extends animal
public void catchmouse() }
class dog extends animal
public void kanjia() }
class duotaidemo
public static void function(animal a)
else if(a instanceof dog)
}}
在多型中成員函式特點:在編譯時期引用型變數所屬的類中是否有呼叫的方法。如果有,編譯通過,如果沒有,編譯失敗
在執行時期,參閱物件所屬的類中是否有呼叫方法
簡單總結就是成員函式在多型呼叫時,編譯看左邊,執行看右邊
在多型中,成員變數的=特點:
無論是編譯和執行,都是參考左邊,(引用型變數所屬的類)
在多型中,靜態成員函式的特點:
無論編譯還是執行都參考左邊
abstract class student
}class bassstudent extends student
public void sleep() }
class advstudent extends student
}class dostudent
}class duotaidemo
}
需求:電腦執行例項:
電腦執行基於主機板
inte***ce pci
class mainboard
public void usepci(pci p)//介面型引用指向子類建立的物件 }
}class netcard implements pci
public void close() }
/*class mainboard
public void usenetcard(netcard c) }
class netcard
public void close() }
*/class duotaidemo5
}
C 中的多型現象和多型的多種實現
一 virtual實現多型 shape類是通用的基類,draw是乙個虛方法,每個派生類都可以有自己的override版本,在執行時可以用shape類的變數動態的呼叫draw方法。public class shape public class rectangle shape public class ...
C 學習筆記之多型 多型的學習 多型學習
c 學習筆記之多型 多型的學習 多型學習 多型分為兩類 靜態多型 函式過載和運算子過載屬於靜態多型,復用函式名 動態多型 派生類和虛函式實現執行時多型 靜態多型和動態多型的區別 靜態多型的函式位址早繫結 編譯階段確定函式位址 動態多型的函式位址晚繫結 執行階段確定函式位址 動態多型滿足條件 動態多型...
讓Mac啟動的時候自動啟動mysql
用mac的launchctl來實現mysql自啟動。方法也簡單。1 編輯乙個mysql啟動檔案。在終端裡面輸入 plain view plain copy sudo vi library launchdaemons com.mysql.mysql.plist 2 輸入啟動檔案內容 html view...