教你如何正確了解java三大特性!!!!
繼承與多態(tài)
本章講解面向?qū)ο蟮娜筇匦裕?strong>封裝,繼承,多態(tài)。
一.包
Java定義了一種名字空間,稱之為包:package。一個類總是屬于某個包,類名(比如Person)只是一個簡寫,真正的完整類名是 包名.類名。例如:apple 類放在包 banana 里面 完整類名是:banana.apple。
自定義包的語法:
package< 包名 >
注意:聲明一個包必須寫在類的第一行。
1.2 包的導入
如果要使用java中存在的包,可以在程序中使用import語句導入包。
格式如下:(注意中間有一個小點)
import< 包名 >.< 類名 >
如果要導入一個包中的多個類,可以使用"*"表示包中所有的類。如上個例子完整代碼為:import banana.*。
二.繼承
繼承就是子類繼承父類的特征和行為,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為。
繼承的作用:通過繼承可以快速創(chuàng)建新的類,實現(xiàn)代碼的重用,提高程序的可維護性,節(jié)省大量創(chuàng)建新類的時間,提高開發(fā)效率和開發(fā)質(zhì)量。
java的繼承語法格式如下:
[修飾符] class 子類名 [extends 父類名]{ //類定義部分 }
例如:banana是一個類,apple是一個類,將banana設為apple的父類
public class apple extends banana{ //內(nèi)容 }
注意!1.java中的繼承為單繼承,即一個子類只能有一個直接的父類。
2.子類不能選擇性繼承父類;
3.Java不支持多重繼承,但一個類可以實現(xiàn)多個接口,從而克服單繼承的缺點;
4.構(gòu)造方法不會被子類繼承,但可以從子類中調(diào)用父類的構(gòu)造方法。
三:重載和重寫
3.1重載(Overload)
在同一個類中,同名的方法有不同的參數(shù)列表(參數(shù)類型不同,參數(shù)個數(shù)不同,甚至是參數(shù)順序不同)即為重載,重載對返回類型無要求,可以相同,也可以不同,但不能通過返回類型是否相同來判斷重載.
注意以下幾點:
(1)同一類中方法名相同,參數(shù)列表不同。
(2)返回值類型不能用于區(qū)分方法的重載。
提醒:構(gòu)造方法也可以實現(xiàn)方法的重載
3.2 重寫
重寫,即重新寫一遍。即在子類中把父類本身具有的方法重新寫一次。子類擴展了父類,子類是一個特殊的父類。子類以父類為基礎,額外增加新的屬性和方法。
重寫的規(guī)則:
1.發(fā)生在之類與父類之間
2.父類中的私有方法不能被重寫
3.重寫父類方法時,訪問權限不能比父類低,拋出異常不能比父類的異常范圍廣或拋出新的異常
4.父類有靜態(tài)方法時,子類必須通過靜態(tài)方法進行重寫
重載與重寫的區(qū)別:
1.重載發(fā)生在一個類里面
2.重寫發(fā)生在父類與子類之間。
四:多態(tài)
多態(tài)指同一操作作用于不同對象,可以有不同的解釋,以致產(chǎn)生不同的執(zhí)行結(jié)果。
多態(tài)體現(xiàn)為父類引用變量可以指向子類對象
前提條件:必須要有子父類關系。
注意:在使用多態(tài)后的父類引用變量調(diào)用方法時,會調(diào)用子類重寫后的方法。
4.1 多態(tài)的轉(zhuǎn)型
多態(tài)的轉(zhuǎn)型分為向上轉(zhuǎn)型和向下轉(zhuǎn)型兩種:
向上轉(zhuǎn)型:多態(tài)本身就是向上轉(zhuǎn)型過的過程
使用格式:
父類類型 變量名=new 子類類型();
適用場景:當不需要面對子類類型時,通過提高擴展性,或者使用父類的功能就能完成相應的操作。
向下轉(zhuǎn)型:一個已經(jīng)向上轉(zhuǎn)型的子類對象可以使用強制類型轉(zhuǎn)換的格式,將父類引用類型轉(zhuǎn)為子類引用各類型
4.2 instanceof
instanceof運算符的前一個操作數(shù)通常是一個引用類型變量,后一個操作數(shù)通常是一個類,它用于判斷運算符前面的引用變量是否是運算符后面的類型或其子類型的實例。
注意!使用instanceof運算符時,需要注意instancecof運算符前面操作數(shù)的編譯時,類型要么與后面的類相同,要么與后面的類具有父子繼承關系,否則會引起編譯失誤。
總結(jié)
本篇文章就到這里了,希望可以給你帶來一些幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容!
相關文章
Mybatis傳入List實現(xiàn)批量更新的示例代碼
這篇文章主要介紹了Mybatis傳入List實現(xiàn)批量更新的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10RocketMQ?Broker實現(xiàn)高可用高并發(fā)的消息中轉(zhuǎn)服務
RocketMQ消息代理(Broker)是一種高可用、高并發(fā)的消息中轉(zhuǎn)服務,能夠接收并存儲生產(chǎn)者發(fā)送的消息,并將消息發(fā)送給消費者。它具有多種消息存儲模式和消息傳遞模式,支持水平擴展和故障轉(zhuǎn)移等特性,可以為分布式應用提供可靠的消息傳遞服務2023-04-04SpringBoot+Redis實現(xiàn)數(shù)據(jù)字典的方法
這篇文章主要介紹了SpringBoot+Redis實現(xiàn)數(shù)據(jù)字典的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10jdk中動態(tài)代理異常處理分析:UndeclaredThrowableException
最近在工作中遇到了報UndeclaredThrowableException的錯誤,通過查找相關的資料,終于解決了,所以這篇文章主要給大家介紹了關于jdk中動態(tài)代理異常處理分析:UndeclaredThrowableException的相關資料,需要的朋友可以參考下2018-04-04Java接口返回省市區(qū)樹形結(jié)構(gòu)的實現(xiàn)
本文主要介紹了Java接口返回省市區(qū)樹形結(jié)構(gòu)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01