java面向對象基礎2

封裝

封裝的概念

將類的某些嘻嘻隱藏在類的內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問。

封裝的好處

只能通過規定的方法訪問數據

隱藏類的實例細節,方便修改和實現

封裝的步驟


使用包管理java中的類

包的作用

管理java文件

解決同名文件衝突

定義包

Package 報名

注意:必須放在java源程序第一行。報名可以使用“.”號隔開。例如:com.farsight.Test

系統中的包


包的使用


繼承

繼承的概念

繼承是類與類的一種關係,是一種“is a ”de 關係。

例如:狗是動物,我們可以描述狗類繼承動物。狗類是動物類的子類(派生類subClass),動物類是狗類的父類(基類superClass)

繼承的好處

子類擁有父類的所有屬性和方法。(private私有無效)

實現代碼複用。

語法規則


方法的重寫(override)

概念

如果子類對繼承弗雷的方法不滿意,是可以重寫父類繼承的方法

,當調用方法時會優先調用子類方法。

語法規則

方法名,參數列表,返回值類型都相同

繼承的總結

子類可以擴展父類

子類擁有父類所有的成員,但不能繼承構造方法

子類可以新增自己的屬性和行爲

子類改寫父類的行爲

注意事項

Java中的繼承是單繼承,子類有且只有一個父類、

子類不能訪問父類的私有成員

如果父類只定義帶參的構造,那麼子類必須在構造的第一行顯示調用父類的構造。

如果父類定義了不帶參的構造,那麼子類不許要顯示調用,系統會自動添加super()調用父類構造

關鍵字super

調用父類的構造方法super()

調用父類的屬性 super.屬性

調用父類的行爲 super.行爲

繼承的初始化順序

先初始化父類在初始化子類

先執行父類的構造方法在執行子類的構造方法

關鍵字final

使用final關鍵字做標識符有最終的含義。Final可以修飾類,方法,屬性和變量

Final修飾屬性表示常量

Final方法表示該變量不能再被重寫

Final修飾類,表示該類不能再被繼承。

Object類


Object類是所有類的父類,如果一個類沒有使用extends關鍵字明確標識繼承另外一個類,那麼這個類默認繼承Object類
Object類中的方法,適合所有類

toString()方法

在Object類裏面定義toString()方法的時候返回的對象的哈希code碼(對象的地址字符串) 
可以通過重寫toString()方法表示出對象的屬性

equals()方法

比較的是對象的引用是否指向同一塊內存地址 
一般情況下比較兩個對象時比較他的值是否一致,所以要進行重寫

抽象類

語法

用abstract修飾的類稱爲接口類

抽象類:


應用場景

在某些情況下,某個父類只是知道其子類應該包含怎樣的方法,但無法準確知道這些子類如何實現這些方法。

從國個具有相同特徵的類中抽象出一個抽象類,以這個抽象類作爲子類的模板,從而避免了子類設計的隨意性。

作用

限制規定子類必須實現某些方法,但不關注實現細節。

使用規則

抽象類不能創建對象,只能被子類繼承。

包含抽象方法的類一定是抽象類,抽象類不一定包含抽象方法,抽象類中可以包含普通方法

抽象方法,用abstract修飾,沒有方法體

如果子類繼承一個抽象的父類,要麼實現父類中的抽象方法,要麼子類定義爲一個抽象類。

接口

概念

類是一種具體的實現,而接口定義了某一批類所需要遵守的規範,接口不關心這些類的內部數據,也不關心這些類裏方法的實現細節,它只規定這些類裏必須提供某些方法。

接口是一種特殊的抽象類,它是對功能的抽象。

接口定義

和類不同,定義接口不在使用class關鍵字,而是使用interface關鍵字

 

[修飾符] interface接口名[extends父接口1,父接口2...]{

    零到多個常量定義...

    零到多個抽象方法定義...

}

       接口中所有屬性必須是靜態常量。

即使在定義時不加public static final 修飾符,系統也會自動添加

接口中所有方法都爲抽象方法

即使定義時沒有添加public abstract修飾,系統也會自動添加


使用接口

一個類可以實現多個接口(一個類可以擁有多個功能),實現接口使用implements關鍵字,java中一個類智能繼承一個父類,是不夠靈活的,通過實現多個接口可以做補充

思考:接口能否繼承父類

不能,如果父類中有普通方法,那麼接口繼承父類,就有了父類中的普通方法和接口定義相矛盾。

思考接口之間是否可以繼承?允許多繼承嗎?

可以,允許

思考:接口中的成員可以爲私有嗎?

不行,接口中的成員必須爲public公共的。

多態

概念:

       對象的多種形態

引用多態

父類的引用可以指向本類的對象

父類的引用可以指向子類的對象

方法多態

Person person=new Student();

Student student=new Student();

思考:兩個不同類型的引用person和student的區別在哪裏?

Student可以訪問對象中的所有非私有的成員

Person 只能訪問對象那個中從父類繼承下來的非私有成員

引用類型轉換

向上類型轉換(隱式/自動類型轉換),是小類型到大類型的轉換

向下類型轉換(強制類型轉換),是大類型到小類型

Instanceof運算符,來解決引用對象的類型,避免類型轉換的安全性問題

 自動類型轉換

       子類型的引用自動轉換爲父類型引用


 

強制類型轉換

       父類型的引用強制轉換爲子類型的引用

  

思考下面的強轉有問題嗎?

有問題,會拋出類型轉換異常

類型檢測運算符 instanceof

功能:instanceof可以檢測引用所指向的對象的類型


程序輸出結果is01 = false , is02 = true

Java中的父子關係有兩種

子類extends父類

類implements 接口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章