2017-08-04spa
多態對象
某一個事物,在不一樣時刻表現出來的不一樣狀態繼承
多態的前提:有繼承關係,有方法重寫,有父類引用指向子類對象接口
多態的體現:繼承方面,接口方面,抽象類方面io
多態的好處:提升了程序的維護性(由繼承保證)編譯
提升了程序的擴展性(由多態保證)class
成員訪問的特色:成員方法的訪問:編譯看左邊,運行看右邊變量
成員變量的訪問:編譯看左邊,運行看左邊擴展
靜態方法的訪問:編譯看左邊,運行看左邊權限
多態的弊端:不能訪問子類的特有功能
多態的轉型:向上轉型:從子到父 父類引用指向子類對象
向下轉型:從父到子 父類引用轉化爲子類對象
向上轉型時:當調用成員方法時會調用出子類的方法,若是子類沒有被調用的方法,則再去從父類找
當調用成員變量時會調出父類的變量
當調用靜態方法時 ,能夠用父類或子類的類名去調用靜態方法,也能夠用建立出來的對象調用靜態方法,是調用父類的
子類特有的類是調不出來的
向下轉型時:能夠調用父類特有的方法
當調成員方法時,若是子類中沒有這個方法則會調父類的,若是有的話,則調用子類的,
調用成員變量,調用靜態方法也是同樣的
抽象類
抽象類和抽象方法必須用abstract關鍵字來修飾
格式:abstract class 類名 {}
public abstract void 方法名();
抽象類不必定要有抽象方法,但抽象方法必定要寫在抽象類中
抽象類不能實例化,但能按照多態的方式,由具體的子類實例化,這是多態的一種,抽象多態
抽象類的子類:要麼是抽象類,要麼重寫抽象類中的全部抽象方法 ,若是抽象類也有它的抽象父類,抽象父類中的方法也會被實現
abstract 關鍵字與private , final ,static 關鍵字衝突
接口
用關鍵字 intreface 聲明 : interface 接口名{}
類實現接口用implement:class 類名 implement 接口名{}
接口不能實例化,但能按照多態的方式,由具體的子類實例化,這是多態的一種,接口多態
單繼承【類與類】;多繼承【接口與接口,逗號隔開】;多實現【類和接口,逗號隔開】
接口的子類:要麼是抽象類,要麼重寫接口中的全部抽象方法 ,若是接口也有它的接口父類,接口父類中的方法也會被實現
接口中的全部方法都是抽象方法,能夠不加abstract關鍵字,默認的就是抽象的;成員變量都是靜態常量,能夠不加static final關鍵字,默認的就是靜態常量
接口中的權限修飾符只能是public
若是接口1繼承了接口2(接口和接口之間只能繼承),則接口1的子類也要實現接口2中未實現的方法
若是類已經實現了接口2,接口1,則接口1不能再去繼承接口1。