Java內容梳理(7)封裝,繼承和多型
封裝
(1)封
訪問控制符和內部類均能體現封,起到保護作用。
訪問控制符:
public:公開,任何地方均可訪問
protected:受保護的,本類,本包,子類可以訪問
預設(只能在本包,本類下才能訪問)
private:私有的,本類才能訪問
(2)裝
方法 和 類 和 包都是裝;
含義:將有聯絡的程式碼分類整合在一起,來統一管理和使用。
作用:減少冗餘程式碼,從而提升程式的維護性。
繼承
(1)什麼是繼承
繼承就是描述類與類之間的“is”關係 如:人是動物
語法:
class Animal{}
class Person extends Animal{}
(2)繼承的特點
1.子類將繼承父類的所有(非靜態)屬性和方法
用法:共性放父類,特性放子類。
2.建立具備繼承關係的類的物件時,JVM的執行流程:
1.分配總記憶體空間
2.從繼承鏈頂端開始,依此往下建立各類物件
a.初始化本類例項屬性
b.呼叫本類的構造方法
多型
(1)什麼是多型
物件在不同時期,體現不同的狀態,不同的狀態有不同的特點。
(2)多型發生的前提
父類引用指向子類物件 Animal an = new Dog();
(3)引用型別的型別轉化
原則:
子型別可以自動轉換到父型別
父型別向子型別轉換時必須使用強制型別轉換
注意:
1.引用型別的轉換,必須發生在繼承關係的基礎上
2.在JVM執行時,能否轉換成功,要看引用指向的物件的型別是否 是目標型別 或目標類型的子型別。
Animal an = new Dog();//父類引用指向子類物件
Dog dog = (Dog)an;//強制型別轉化,可以轉化成功
Animal an = new Animal();
Dog dog = (Dog)an;//編譯通過,執行出錯;引用指向的物件型別不是目標型別所以出錯
執行時會提示型別轉換異常:java.lang.ClassCastException
(4)instanceof關鍵字的使用
作用:判斷引用變數所指向的物件是否是指定的型別或指定型別的子型別
語法:引用變數 instanceof 類名 ==> true:相容, false:不相容
推薦:在對引用型別進行型別轉換時最好先使用instanceof進行判斷。
(5)多種狀態的處理
1. 編譯時狀態:
時期:不是執行時狀態時
特點:編譯時狀態的特點看引用型別
2. 執行時狀態:
時期:程式執行時且該物件正在執行方法時( 物件被"."了: obj1.eqauls(obj2) )
特點:執行時狀態的特點看物件型別
(6)多型的作用
子類差異對呼叫者遮蔽