1. 程式人生 > >Java內容梳理(7)封裝,繼承和多型

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)多型的作用

子類差異對呼叫者遮蔽