首先說一下什麼是介面
介面定義的是一種規範,(打個比方)只有滿足我這個介面的電器才能往上插,只要是中國大陸生產的家有電器,必須遵守這個插孔規範
介面是一種規範,介面是給類定義的規範,類和介面發生關係後,類要重寫介面中的所有抽象方法
介面是一種引用型別,介面的定義格式 public inte***ce 介面名
介面在編譯之後也生成.class的位元組碼檔案
介面中可以定義以下內容
在jdk7抽象方法 常量
在jdk8的時候 加了預設方法 靜態方法
介面中最核心的內容是抽象方法
介面中抽象方法的定義格式 public abstract 返回值型別 方法名(引數列表)
注意 介面中的抽象方法可以省略 public abstract 關鍵字 因為在介面中 他是預設的
介面中抽象方法的使用
介面中不能建立物件,不能例項,介面是給實現類用的
我們定義乙個實現類,然後去實現介面,然後重寫介面中的所有抽象方法 建立實現類的物件,然後通過實現類物件呼叫方法
類實現介面的格式
public class a implements i 格式表示 a類實現了 i 介面,此時a類就是 i 介面的實現類
抽象方法使用的注意事項
乙個普通類在實現介面的時候,必須重寫所有的抽象方法
乙個抽象類在實現介面的時候,可以不重寫抽象方法
在jdk8的時候,介面中也可以有預設方法了
為什麼有預設方法? 為了提高**的復用性,不需要每個類都去重寫同樣的乙個方法,介面中的預設方法是有方法體
介面中的預設方法固定使用 public 修飾
預設方法的使用
實現類在實現介面的時候,可以不重寫介面中的預設方法,我們可以通過實現類物件直接呼叫預設方法,應用場景,多個類重寫這乙個方法,就可以把它定義成為預設方法
在jdk8 的時候,介面中可以有靜態方法
格式 public static 返回值 方法名(引數列表) 使用方式 靜態方法要通過介面名字直接呼叫。注意介面中的靜態方法不能通過實現類呼叫
介面中常量的介紹,在任何版本的介面中,都可以有常量,介面中常量的定義
格式 public static final 資料型別 常量名 = 值
該格式是定義成員變數的格式,從效果上看,這個變數是乙個常量,因為他不可改變,final關鍵字修飾的變數時不能被改值的,所以表示乙個常量
注意介面中定義的常量前面的 public static final 關鍵字,介面中常量也會預設用這三個關鍵字修飾
如果要使用介面中的常量,可以通過介面名 直接呼叫,介面中的常量不能被改值。介面中的常量一定要給出預設值,介面中定義的常量在起名字的時候,建議全部字母大寫,如果有多個單詞,多個單詞之間使用下劃線隔開
類和類之間的關係是繼承(extends),乙個類只能繼承乙個父類
類和介面之間的關係是實現(implement),乙個類可以實現多個介面
介面與介面之間的關係是繼承(extends),乙個介面可以繼承多個介面
介面和介面多繼承的格式
public inte***ce a extends b,c 上面代表表示a 介面同時繼承了兩個介面
注意 如果父類的方法和介面的預設方法同名,那麼通過子類物件呼叫,用的是父類的方法
說一下什麼是多型
多型是物件導向的三大特徵之一,另外兩個分別是封裝和繼承
繼承是多型的前提,沒有繼承就沒有多型
多型 乙個事務具備多種形態
引用指的就是引用型別變數,或者也可以成為位址值,因為引用型別的變數中方的就是位址值
多型的好處 如果引數是父類型別,那麼我們可以傳遞任何子類物件
原因 在多型中,子類型別可以當成父類型別看待
多型中成員的訪問特點
成員變數的訪問特點 編譯看左邊 父類 執行看左邊 父類
成員方法的訪問特點 編譯看左邊 父類,執行看右邊 子類
多型的缺點 父類只能訪問父類的資料,無法訪問子類的資料
引用型別轉換 多型中的轉型 向上轉型(子類型別可以轉成父類型別)
為什麼子類可以轉換成父類?
原因子類型別可以當成父類父類區看待
格式 父類型別 變數 = new 子類型別();
多型本身就是一種向上轉型
向下轉型之前必須要有向上轉型的前提
向下轉型的目的是呼叫子類獨有的方法
父類與子類本身是通著的,類就是用來描述事物的,繼承描述了類與類的關係,因為這個關係才有了多型
以下僅限於個人理解
水 熱了可以變成水蒸氣 水蒸氣遇類又可以變成雪 雪遇熱又可以變化成為水
根據需求靈活的變化
instanceof 關鍵字
格式 變數名 instanceof 資料型別 作用判斷乙個變數是否是指定的資料型別
使用場景 在向下轉型之前進行乙個 instanceof 的判斷,如果父類表示的就是指定的子類型別,那麼才進行向下轉型
Java基礎篇 多型
簡單的講一講多型 多型思想 同乙個行為具有多個不同表現形式或形態的能力。前提條件 繼承 重寫 父類引用指向子類物件 基本語法 parent p new child 假如父類有五個子類,那麼父類引用可以指向五個不同的子類 非同時指向五個 增加易讀性和可維護性,降低記憶體占用。下面展示乙個有趣的小例子 ...
Java基礎篇 多型
1.多個子類繼承於某同一父類,該父類引用能指向任一子類物件,並能呼叫被子類重寫的方法。2.實現類與介面之間也存在多型,介面引用可以指向其任一實現類的物件,並能呼叫其被實現類重寫的方法。3.子類與父類之間的多型 和 實現類與介面之間的多型 區別在於 乙個類只能繼承於乙個父類,但能實現多個介面。4.注意...
Java基礎篇 03多型 抽象類 介面
事務的多種形態 前提 1 有繼承關係,2 有方法重寫,3 要有父類引用指向子類物件,比如 animal a new cat a.eat 成員變數 編譯看左邊 父類 執行看左邊 父類 成員方法 編譯看左邊 父類 執行看右邊 子類 向上轉型與向下轉型 父類引用指向子類物件就是向上轉型。對態好處 1 提高...