多型的概念:事物在不同環境下表現出來的不同形態
前提:1.要有繼承或者實現關係
2.要有方法的重寫
3.要有父類的引用指向子類的物件
多型的兩個具體的知識點:
1.子父類中同名變數呼叫時,是如何執行的
2.子父類中重寫方法呼叫時,是如何執行的
注意事項:在多型關係中:物件在呼叫同名變數是,編譯的時候看父類是有有該變數,如果有,就不報錯,如果沒有,就報錯,執行的也是父類中的變數
物件在呼叫重寫方法是,編譯的時候看父類是否有該變數如果有不報錯,如果沒有就報錯,執行的是子類的方法
繼承:子類有就用子類的,子類沒有用父類的,父類也沒有就報錯
多型:引用永遠指向子類記憶體區中父類的那一小片記憶體 永遠優先尋找父類中的成員;執行同名變數時,編譯看父類 執行看父類
執行重寫方法是,編譯也是看父類,執行時因為重寫的機制導致執行子類中的重寫方法
怎麼定義抽象類: 需要乙個關鍵字:abstract
當我們吧乙個方法定義成為抽象類以後,我們必須要將類定義成抽象類
1.有抽象方法的類一定是抽象類,但是 抽象類中不一定有抽象方法
2.抽象類中是否有構造方法??有
3.有構造方法能不能建立物件?答案是不能 主要是給子類物件初始化用的
4.抽象類中的抽象方法 子類必須要重寫嗎?要重寫,而且是有幾個重寫幾個
5.abstract和final 能否共存??不能因為final修飾的類不能被繼承,修飾的方法不能被重寫,但是abstract 修飾的類需要繼承,修飾的方法需要重寫
6.既然抽象類不能建立物件,那我就想用抽象類的物件怎麼辦?
可以使用抽象類多型的形式定義物件,然後呼叫變數或者方法
定義:功能的擴充套件 原先不具備的功能 經過後天的學習 學會的 定義為介面
如何定義乙個介面:
inte***ce 近似於class
inte***ce 介面名
注意事項:
1.介面名所有的方法都是抽象方法,即使你沒寫abstract 系統也會預設的給你加上abstract
2.介面是沒有構造方法的,不能建立物件:可以使用介面多型的形式 進行介面呼叫介面中的值
3.介面可以有變數但是所有的變數都是常量 前面預設加上了static和final
4.介面怎麼使用/???實現:implements
class 類名 implements介面名
5.實現介面以後 需要實現介面所有的抽象方法 要麼類本身是乙個抽象 類
6.類和介面之間是乙個多實現的關係
7.介面和介面之間是繼承關係
物件導向之多型
多型即事物存在的多種形態 要有繼承 要有方法重寫 要有父類引用指向子類物件 1,多型中的成員訪問特點之成員變數 編譯看左邊 父類 執行看左邊 父類 2,多型中的成員訪問特點之成員方法 編譯看左邊 父類 執行看右邊 子類 3,多型中的成員訪問特點之靜態成員方法 編譯看左邊 父類 執行看左邊 父類 總結...
物件導向之多型
多型指的是一類事物有多種形態,多型性是指在不考慮例項型別的情況下使用例項 class animals def run self print running class dog animals def run self print dog is running class pig animals de...
物件導向之多型
多型指的是一類事物有多種形態 動物有多種形態 人,狗,豬 import abc class animal metaclass abc.abcmeta 同一類事物 動物 abc.abstractmethod deftalk self pass class people animal 動物的形態之一 人...