教你如何正確瞭解java三大特性!!!!
繼承與多態
本章講解面向對象的三大特性:封裝,繼承,多態。
一.包
Java定義瞭一種名字空間,稱之為包:package。一個類總是屬於某個包,類名(比如Person)隻是一個簡寫,真正的完整類名是 包名.類名。例如:apple 類放在包 banana 裡面 完整類名是:banana.apple。
自定義包的語法:
package< 包名 >
註意:聲明一個包必須寫在類的第一行。
1.2 包的導入
如果要使用java中存在的包,可以在程序中使用import語句導入包。
格式如下:(註意中間有一個小點)
import< 包名 >.< 類名 >
如果要導入一個包中的多個類,可以使用”*”表示包中所有的類。如上個例子完整代碼為:import banana.*。
二.繼承
繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
繼承的作用:通過繼承可以快速創建新的類,實現代碼的重用,提高程序的可維護性,節省大量創建新類的時間,提高開發效率和開發質量。
java的繼承語法格式如下:
[修飾符] class 子類名 [extends 父類名]{ //類定義部分 }
例如:banana是一個類,apple是一個類,將banana設為apple的父類
public class apple extends banana{ //內容 }
註意!1.java中的繼承為單繼承,即一個子類隻能有一個直接的父類。
2.子類不能選擇性繼承父類;
3.Java不支持多重繼承,但一個類可以實現多個接口,從而克服單繼承的缺點;
4.構造方法不會被子類繼承,但可以從子類中調用父類的構造方法。
三:重載和重寫
3.1重載(Overload)
在同一個類中,同名的方法有不同的參數列表(參數類型不同,參數個數不同,甚至是參數順序不同)即為重載,重載對返回類型無要求,可以相同,也可以不同,但不能通過返回類型是否相同來判斷重載.
註意以下幾點:
(1)同一類中方法名相同,參數列表不同。
(2)返回值類型不能用於區分方法的重載。
提醒:構造方法也可以實現方法的重載
3.2 重寫
重寫,即重新寫一遍。即在子類中把父類本身具有的方法重新寫一次。子類擴展瞭父類,子類是一個特殊的父類。子類以父類為基礎,額外增加新的屬性和方法。
重寫的規則:
1.發生在之類與父類之間
2.父類中的私有方法不能被重寫
3.重寫父類方法時,訪問權限不能比父類低,拋出異常不能比父類的異常范圍廣或拋出新的異常
4.父類有靜態方法時,子類必須通過靜態方法進行重寫
重載與重寫的區別:
1.重載發生在一個類裡面
2.重寫發生在父類與子類之間。
四:多態
多態指同一操作作用於不同對象,可以有不同的解釋,以致產生不同的執行結果。
多態體現為父類引用變量可以指向子類對象
前提條件:必須要有子父類關系。
註意:在使用多態後的父類引用變量調用方法時,會調用子類重寫後的方法。
4.1 多態的轉型
多態的轉型分為向上轉型和向下轉型兩種:
向上轉型:多態本身就是向上轉型過的過程
使用格式:
父類類型 變量名=new 子類類型();
適用場景:當不需要面對子類類型時,通過提高擴展性,或者使用父類的功能就能完成相應的操作。
向下轉型:一個已經向上轉型的子類對象可以使用強制類型轉換的格式,將父類引用類型轉為子類引用各類型
4.2 instanceof
instanceof運算符的前一個操作數通常是一個引用類型變量,後一個操作數通常是一個類,它用於判斷運算符前面的引用變量是否是運算符後面的類型或其子類型的實例。
註意!使用instanceof運算符時,需要註意instancecof運算符前面操作數的編譯時,類型要麼與後面的類相同,要麼與後面的類具有父子繼承關系,否則會引起編譯失誤。
總結
本篇文章就到這裡瞭,希望可以給你帶來一些幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- 一篇文章帶你深入瞭解Java對象與Java類
- Java深入講解instanceof關鍵字的使用
- 一篇文章帶你入門java面向對象
- java構造器 默認構造方法及參數化構造方法
- 一篇文章帶你搞定JAVA泛型