標籤:抽象類別 多繼承 封裝 運行時 多個 exce 抽象方法 它的 非靜態方法
今日內容
介面
多態
介面interface
介面的概述
介面是比抽象類別還抽象的類,因為介面所有的方法都是抽象方法
介面的由來
可以解決Java中類單一繼承的局限性
格式:
interface 介面名 {
}
使用
implements ,類去實現介面
介面中成員的特點
成員變數
只有常量
預設的修飾符 public static final
成員方法
只有抽象方法,沒有非抽象方法
預設修飾符 public abstract
構造方法
沒有構造方法
類與介面之間的關係
類與類:繼承關係(extends),單一繼承,多層繼承
類與介面:類實現(implements)介面(interface),一個類可以實現多個介面
介面與介面:繼承關係(extends)多繼承(一個介面可以繼承多個介面),多層繼承
介面的優點
(1)解決了單一繼承的局限性
(2)對外提供規則
(3)降低了程式的耦合性(可以實現模組化開發,定義好規則,每個人實現自己的模組,提高了開發的效率)
介面與抽象類別之間的區別
(1)定義上不同
介面是interface關鍵字定義的
抽象類別是abstract class關鍵字定義的
(2)與類之間的關係不同
介面與類,類實現介面,可以多實現
抽象類別與類,繼承關係,只能單一繼承,不能多繼承,但是可以多層繼承
(3)成員的不同
成員變數
介面:沒有成員變數,只可以有常量,預設修飾符public static final
抽象類別:可以有成員變數,也可以有常量
成員方法
介面:沒有非抽象方法,只可以有抽象方法,它的抽象方法是有預設修飾的,public abstract
抽象類別:既可以有非抽象方法,也可以有抽象方法,它的抽象方法是沒有預設修飾符的
構造方法
介面:沒有構造方法
抽象類別:有構造方法,為子類提供
物件導向的三大特徵:
封裝
繼承
多態
多態
什麼是多態:多態就是一個事物的多種形態,比如水可以是水,也可以成為冰;貓是一隻貓,也是動物
蘇軾曰:橫看成嶺側成峰,遠近高低各不同
Java中的多態表現在父類的引用指向子類的對象,比如Animal a = new Cat();
A:普通類多態定義的格式
B:抽象類別多態定義的格式
C:介面多態定義的格式
多態的前提:
(1)有繼承或者實現關係
(2)有方法重寫
(3)父類的引用指向子類的對象
多態中成員的特點
Animal a = new Cat();
成員變數
編譯時間看左邊(父類),運行時看左邊(父類)
成員方法(非靜態方法)(動態綁定)
編譯時間看左邊(父類),運行時看右邊(子類)
靜態方法
編譯看左邊(父類),運行時看左邊(父類)
簡而言之:編譯看左邊(父類),運行時成員方法(非靜態方法)看的是右邊,其他(成員變數和靜態方法)看的都是左邊
參考型別的類型轉換
向上轉型:由小的類型轉為大的類型
Animal a = new Cat();
向下轉型:由大的類型轉為小的類型
Cat c = (Cat)a;
ClassCastException類型轉換異常,將一種類型轉為另一種類型,而這兩種類型不是同一種類型或者不是父類型
多態的優缺點:
優點:
提高了代碼的可維護性
提高了代碼的可擴充性
缺點:
多態之後不能訪問子類特有的成員
instancof 運算子,instancof也是一個關鍵字
作用是判斷運算子前面的對象(或者對象名)是否是運算子後面的一種類型
格式:
對象(對象名) instanceof 類型
注意:instanceof的使用並不是任意的對象和類型都能放在一起進行判斷的,對象的類型和運算子後面的類型必須要有子父類別關係,
否則的話,編譯都不能通過
java學習--基礎知識進階第三天--筆記