1. 程式人生 > >多態,抽象,接口

多態,抽象,接口

ont 實現 轉化 必須 類實例化 提高 strong 聲明 法則

2017-08-04

多態

某一個事物,在不同時刻表現出來的不同狀態

多態的前提:有繼承關系,有方法重寫,有父類引用指向子類對象

多態的體現:繼承方面,接口方面,抽象類方面

多態的好處:提高了程序的維護性(由繼承保證)

      提高了程序的擴展性(由多態保證)

成員訪問的特點:成員方法的訪問:編譯看左邊,運行看右邊

        成員變量的訪問:編譯看左邊,運行看左邊

        靜態方法的訪問:編譯看左邊,運行看左邊

多態的弊端:不能訪問子類的特有功能

多態的轉型:向上轉型:從子到父 父類引用指向子類對象

      向下轉型:從父到子 父類引用轉化為子類對象

      向上轉型時:當調用成員方法時會調用出子類的方法,如果子類沒有被調用的方法,則再去從父類找

            當調用成員變量時會調出父類的變量

            當調用靜態方法時 ,可以用父類或子類的類名去調用靜態方法,也可以用創建出來的對象調用靜態方法,是調用父類的

            子類特有的類是調不出來的

      向下轉型時:可以調用父類特有的方法

            當調成員方法時,如果子類中沒有這個方法則會調父類的,如果有的話,則調用子類的,

            調用成員變量,調用靜態方法也是一樣的

抽象類

抽象類和抽象方法必須用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。

多態,抽象,接口