目錄
多態
前提
形式
測試類
調用成員的特點
優勢
?劣勢
包
注意事項:
final關鍵字
常量?
命名規范:
注意事項:
?權限修飾符
分類
代碼塊
局部代碼塊?
構造代碼塊
靜態代碼塊
抽象類
抽象類:
定義格式? ??
抽象方法:
定義格式? ?
注意事項
多態
????????同類型的對象,表現出不同形態
前提
? ? ? ? 有繼承關系
? ? ? ? 有父類引用指向子類對象
? ? ? ? 有方法重寫
形式
? ? ? ? 父類類型 對象名稱 = 子類對象;
測試類
public class Test {public static void main(String[] args) {//創建3個對象 學生 老師 管理員Student s = new Student();s.setName("張三");s.setAge(18);Teacher t = new Teacher();t.setName("李四");t.setAge(50);Administrator a = new Administrator();a.setName("王五");a.setAge(30);register(s);register(t);register(a);}public static void register(Person p) {p.show();}
// 學生的信息為:張三,18
// 老師的信息為:李四,50
// 管理員的信息為:王五,30
}
調用成員的特點
變量調用:編譯看左邊,運行也看左邊
方法調用:編譯看左邊,運行看右邊
優勢
? ? ? ? 在多態形態下,右邊對象可以解耦合,便于擴展和維護。
? ? ? ? 定義方法時,使用父類做參數,可以接收所有子類,體現多態的擴展性和便利
?劣勢
?不能調用子類的特有功能,使用時需要進行強制類型轉換。轉換時使用instanceof關鍵字進行判斷
包
????????包就是文件夾,用來管理不同功能的java類,方便后續的代碼維護
包名取名規則:見名知意
注意事項:
? ? ? ? 使用同一包中的類,不需要導包
? ? ? ? 使用java.lang包中的類,不需要導包
? ? ? ? 如果同時使用兩個包的同名類,需要用全類名
final關鍵字
修飾對象 | 作用 |
---|---|
方法 | 表明該方法是最終方法,不能被重寫 |
類 | 表明類是最終類,不能被繼承 |
變量 | 叫做常量,只能被賦值一次 |
常量?
? ? ? ? 常量一般作為系統的配置信息,方便維護,提高代碼可讀性。
命名規范:
? ? ? ? ? ? ? ? 單個單詞:全部大寫
? ? ? ? ? ? ? ? 多個單詞:全部大寫,單詞之間用下劃線隔開?
注意事項:
? ? ? ? final修飾的變量是基本數據類型,那么變量存儲的地址值不能發生變化。
? ? ? ? final修飾的變量是引用數據類型,那么變量存儲的地址值不能發生變化,對象內部可以改變
?權限修飾符
?權限修飾符:用來控制一個成員被訪問的范圍
作用:可以修飾成員變量,成員方法,構造方法,內部類
分類
修飾符 | 同一個類中 | 同一個包中其他類 | 不同包下的子類 | 不同包下的無關類 |
---|---|---|---|---|
private | √ | |||
空(默認) | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
代碼塊
- 局部代碼塊
- 構造代碼塊
- 靜態代碼塊
局部代碼塊?
????????????????用于限定變量生命周期,提高內存利用率。
構造代碼塊
? ? ? ? ? ? ? ? 寫在成員位置的代碼塊,優先構造方法執行的。
靜態代碼塊
? ? ? ? ? ? ? ? 需要static關鍵字修飾,隨著類的加載而加載,并且自動觸發,只執行一次。
抽象類
抽象類:
? ? ? ? ? ? ? ? 如果一個類中存在抽象方法,那么該類必須被聲明為抽象類
定義格式? ??
public abstract class 類名{}
抽象方法:
????????????????將共性的行為抽取到父類之后。由于每個子類執行的內容不一樣,所以在父類中不能確定每個子類的方法體
定義格式? ?
public abstract 返回值類型 方法名(參數列表);
注意事項
- 抽象類不能實例化
- 抽象類中不一定有抽象方法,有抽象方法的類一定是抽象類
- 可以有構造方法
- 抽象類的子類需要重寫抽象類中的所有抽象方法,或者子類也是抽象類