版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
延時(shí)符智能家居系統(tǒng)SmartHomeSystem團(tuán)隊(duì):夏繼媛晏凱唐建東吳麗春
張立涓許亞蘭張秀君面向?qū)ο蟪绦蛟O(shè)計(jì)(二)類的繼承final關(guān)鍵字抽象類和接口包異常訪問(wèn)控制一、
類的繼承1.1繼承的概念程序中,繼承描述的是事物之間的所屬關(guān)系,通過(guò)繼承可以使多種事物之間形成一種關(guān)系體系。在Java中,類的繼承是指在一個(gè)現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個(gè)新的類,構(gòu)建出來(lái)的新類被稱作子類,現(xiàn)有類被稱作父類,子類會(huì)自動(dòng)擁有父類所有可繼承的屬性和方法。在程序中,如果想聲明一個(gè)類繼承另一個(gè)類,需要使用extends關(guān)鍵字,接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)子類是如何繼承父類的。1.1繼承的概念程序中,繼承描述的是事物之間的所屬關(guān)系,通過(guò)繼承可以使多種事物之間形成一種關(guān)系體系。在Java中,類的繼承是指在一個(gè)現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個(gè)新的類,構(gòu)建出來(lái)的新類被稱作子類,現(xiàn)有類被稱作父類,子類會(huì)自動(dòng)擁有父類所有可繼承的屬性和方法。在程序中,如果想聲明一個(gè)類繼承另一個(gè)類,需要使用extends關(guān)鍵字,接下來(lái)通過(guò)一個(gè)案例來(lái)學(xué)習(xí)子類是如何繼承父類的。一、
類的繼承一、
類的繼承1.1繼承的概念在類的繼承中,需要注意一些問(wèn)題,具體如下:1、在Java中,類只支持單繼承,不允許多重繼承,也就是說(shuō)一個(gè)類只能有一個(gè)直接父類,例如下面這種情況是不合法的。2、多個(gè)類可以繼承一個(gè)父類,例如下面這種情況是允許的。一、
類的繼承1.1繼承的概念在類的繼承中,需要注意一些問(wèn)題,具體如下:3、在Java中,多層繼承是可以的,即一個(gè)類的父類可以再去繼承另外的父類,例如C類繼承自B類,而B類又可以去繼承A類,這時(shí),C類也可稱作A類的子類。下面這種情況是允許的。一、
類的繼承一、
類的繼承1.2重寫父類方法在繼承關(guān)系中,子類會(huì)自動(dòng)繼承父類中定義的方法,但有時(shí)在子類中需要對(duì)繼承的方法進(jìn)行一些修改,即對(duì)父類的方法進(jìn)行重寫。需要注意的是,在子類中重寫的方法需要和父類被重寫的方法具有相同的方法名、參數(shù)列表以及返回值類型。一、類的繼承1.2重寫父類方法從上例的運(yùn)行結(jié)果可以看出,當(dāng)子類重寫父類的方法后,子類對(duì)象將無(wú)法訪問(wèn)父類被重寫的方法,為了解決這個(gè)問(wèn)題,在Java中專門提供了一個(gè)super關(guān)鍵字用于訪問(wèn)父類的成員。例如訪問(wèn)父類的成員變量、成員方法和構(gòu)造方法。接下來(lái)分兩種情況來(lái)學(xué)習(xí)一下super關(guān)鍵字的具體用法。1、使用super關(guān)鍵字調(diào)用父類的成員變量和成員方法。具體格式如下:一、類的繼承1.2重寫父類方法2、使用super關(guān)鍵字調(diào)用父類的構(gòu)造方法。具體格式如下:一、類的繼承1.2重寫父類方法上例中在實(shí)例化Dog對(duì)象時(shí)一定會(huì)調(diào)用Dog類的構(gòu)造方法。從運(yùn)行結(jié)果可以看出,Dog類的構(gòu)造方法被調(diào)用時(shí)父類的構(gòu)造方法也被調(diào)用了。需要注意的是,通過(guò)super調(diào)用父類構(gòu)造方法的代碼必須位于子類構(gòu)造方法的第一行,并且只能出現(xiàn)一次。將上例第11行代碼去掉,再次編譯程序會(huì)報(bào)錯(cuò):一、類的繼承一、
類的繼承1.2重寫父類方法在繼承關(guān)系中,子類會(huì)自動(dòng)繼承父類中定義的方法,但有時(shí)在子類中需要對(duì)繼承的方法進(jìn)行一些修改,即對(duì)父類的方法進(jìn)行重寫。需要注意的是,在子類中重寫的方法需要和父類被重寫的方法具有相同的方法名、參數(shù)列表以及返回值類型。1.2重寫父類方法出錯(cuò)的原因是,在子類的構(gòu)造方法中一定會(huì)調(diào)用父類的某個(gè)構(gòu)造方法。這時(shí)可以在子類的構(gòu)造方法中通過(guò)super指定調(diào)用父類的哪個(gè)構(gòu)造方法,如果沒(méi)有指定,在實(shí)例化子類對(duì)象時(shí),會(huì)自動(dòng)調(diào)用父類無(wú)參的構(gòu)造方法。為了解決上述程序的編譯錯(cuò)誤,可以在子類中顯示地調(diào)用父類中已有的構(gòu)造方法,當(dāng)然也可以選擇在父類中定義無(wú)參的構(gòu)造方法,現(xiàn)將上例中的Animal類進(jìn)行修改,如圖所示。一、類的繼承二、final關(guān)鍵字final關(guān)鍵字可用于修飾類、變量和方法,它有“這是無(wú)法改變的”或者“最終”的含義,因此被final修飾的類、變量和方法將具有以下特性:1、final修飾的類不能被繼承。2、final修飾的方法不能被子類重寫。3、final修飾的變量(成員變量和局部變量)是常量,只能賦值一次。2.1final關(guān)鍵字修飾類Java中的類被final關(guān)鍵字修飾后,該類將不可以被繼承,也就是不能夠派生子類。接下來(lái)通過(guò)一個(gè)案例來(lái)驗(yàn)證。二、final關(guān)鍵字2.2final關(guān)鍵字修飾方法當(dāng)一個(gè)類的方法被final關(guān)鍵字修飾后,這個(gè)類的子類將不能重寫該方法。二、final關(guān)鍵字2.2final關(guān)鍵字修飾方法當(dāng)一個(gè)類的方法被final關(guān)鍵字修飾后,這個(gè)類的子類將不能重寫該方法。二、final關(guān)鍵字這是因?yàn)锳nimal類的shout()方法被final所修飾。由此可見(jiàn),被final關(guān)鍵字修飾的方法為最終方法,子類不能對(duì)該方法進(jìn)行重寫。正是由于final的這種特性,當(dāng)在父類中的定義某個(gè)方法時(shí),如果不希望被子類重寫,就可以使用final關(guān)鍵字修飾該方法。二、final關(guān)鍵字這是因?yàn)槭褂胒inal關(guān)鍵字修飾成員變量時(shí),虛擬機(jī)不會(huì)對(duì)其進(jìn)行初始化。因此使用final修飾成員變量時(shí),需要在定義變量的同時(shí)賦予一個(gè)初始值,下面將第2行代碼修改為:finalStringname="李芳";//為final關(guān)鍵字修飾的name屬性賦值三、抽象類和接口3.1抽象類當(dāng)定義一個(gè)類時(shí),常常需要定義一些方法來(lái)描述該類的行為特征,但有時(shí)這些方法的實(shí)現(xiàn)方式是無(wú)法確定的。針對(duì)上面描述的情況,Java允許在定義方法時(shí)不寫方法體,不包含方法體的方法為抽象方法,抽象方法必須使用abstract關(guān)鍵字來(lái)修飾,具體示例如下:3.1抽象類當(dāng)一個(gè)類中包含了抽象方法,該類必須使用abstract關(guān)鍵字來(lái)修飾,使用abstract關(guān)鍵字修飾的類為抽象類,具體示例如下:三、抽象類和接口3.1抽象類在定義抽象類時(shí)需要注意,包含抽象方法的類必須聲明為抽象類,但抽象類可以不包含任何抽象方法,只需使用abstract關(guān)鍵字來(lái)修飾即可。另外,抽象類是不可以被實(shí)例化的,因?yàn)槌橄箢愔杏锌赡馨橄蠓椒ǎ橄蠓椒ㄊ菦](méi)有方法體的,不可以被調(diào)用。如果想調(diào)用抽象類中定義的方法,則需要?jiǎng)?chuàng)建一個(gè)子類,在子類中將抽象類中的抽象方法進(jìn)行實(shí)現(xiàn)。三、抽象類和接口3.2接口如果一個(gè)抽象類中的所有方法都是抽象的,則可以將這個(gè)類用另外一種方式來(lái)定義,即接口。在定義接口時(shí),需要使用interface關(guān)鍵字來(lái)聲明,具體示例如下:從示例中會(huì)發(fā)現(xiàn)抽象方法breathe()并沒(méi)有使用abstract關(guān)鍵字來(lái)修飾,這是因?yàn)榻涌谥卸x的方法和變量都包含一些默認(rèn)修飾符。接口中定義的方法默認(rèn)使用“publicabstract”來(lái)修飾,即抽象方法。接口中的變量默認(rèn)使用“publicstaticfinal”來(lái)修飾,即全局常量。三、抽象類和接口3.2接口由于接口中的方法都是抽象方法,因此不能通過(guò)實(shí)例化對(duì)象的方式來(lái)調(diào)用接口中的方法。此時(shí)需要定義一個(gè)類,并使用implements關(guān)鍵字實(shí)現(xiàn)接口中所有的方法。三、抽象類和接口四、異常4.1什么是異常在程序運(yùn)行的過(guò)程中,也會(huì)發(fā)生這種非正常狀況,比如程序運(yùn)行時(shí)磁盤空間不足,網(wǎng)絡(luò)連接中斷,被裝載的類不存在。針對(duì)這種情況,在Java語(yǔ)言中,引入了異常,以異常類的形式對(duì)這些非正常情況進(jìn)行封裝,通過(guò)異常處理機(jī)制對(duì)程序運(yùn)行時(shí)發(fā)生的各種問(wèn)題進(jìn)行處理。接下來(lái)通過(guò)一個(gè)案例來(lái)認(rèn)識(shí)一下什么是異常:四、異常4.1什么是異常在程序運(yùn)行的過(guò)程中,也會(huì)發(fā)生這種非正常狀況,比如程序運(yùn)行時(shí)磁盤空間不足,網(wǎng)絡(luò)連接中斷,被裝載的類不存在。針對(duì)這種情況,在Java語(yǔ)言中,引入了異常,以異常類的形式對(duì)這些非正常情況進(jìn)行封裝,通過(guò)異常處理機(jī)制對(duì)程序運(yùn)行時(shí)發(fā)生的各種問(wèn)題進(jìn)行處理。接下來(lái)通過(guò)一個(gè)案例來(lái)認(rèn)識(shí)一下什么是異常:程序發(fā)生了算數(shù)異常(ArithmeticException),這個(gè)異常是由于程序中的第3行代碼調(diào)用divide()方法時(shí)傳入了參數(shù)0,在方法中的第8行代碼的運(yùn)算中出現(xiàn)了被0除的錯(cuò)誤。在這個(gè)異常發(fā)生后,程序會(huì)立即結(jié)束,無(wú)法繼續(xù)向下執(zhí)行。4.1什么是異常在上例中產(chǎn)生了一個(gè)ArithmeticException異常,ArithmeticException異常只是Java異常類中的一種,在Java中還提供了大量的異常類,這些類都繼承自java.lang.Throwable類。接下來(lái)通過(guò)一張圖來(lái)展示Throwable類的繼承體系。四、異常4.1什么是異常Throwable有兩個(gè)直接子類Error和Exception,其中Error代表程序中產(chǎn)生的錯(cuò)誤,Exception代表程序中產(chǎn)生的異常。Error類稱為錯(cuò)誤類,它表示Java運(yùn)行時(shí)產(chǎn)生的系統(tǒng)內(nèi)部錯(cuò)誤或資源耗盡的錯(cuò)誤,是比較嚴(yán)重的,僅靠修改程序本身是不能恢復(fù)執(zhí)行的。舉一個(gè)生活中的例子,在蓋樓的過(guò)程中因偷工減料,導(dǎo)致大樓坍塌,這就相當(dāng)于一個(gè)Error。使用java命令去運(yùn)行一個(gè)不存在的類就會(huì)出現(xiàn)Error錯(cuò)誤。四、異常4.1什么是異常Throwable有兩個(gè)直接子類Error和Exception,其中Error代表程序中產(chǎn)生的錯(cuò)誤,Exception代表程序中產(chǎn)生的異常。Exception類稱為異常類,它表示程序本身可以處理的錯(cuò)誤,在開(kāi)發(fā)Java程序中進(jìn)行的異常處理,都是針對(duì)Excption類及其子類。在Exception類的眾多子類中有一個(gè)特殊的RuntimeException類,該類及其子類用于表示運(yùn)行時(shí)異常,除了此類,Exception類下所有其它的子類都用于表示編譯時(shí)異常。四、異常4.1什么是異常Throwable類中的常用方法四、異常4.2try…catch上例由于發(fā)生了異常,程序立即終止,無(wú)法繼續(xù)向下執(zhí)行。為了解決這樣的問(wèn)題,Java中提供了一種對(duì)異常進(jìn)行處理的方式——異常捕獲。異常捕獲通常使用try…catch語(yǔ)句,具體語(yǔ)法格式如下:其中在try代碼塊中編寫可能發(fā)生異常的Java語(yǔ)句,catch代碼塊中編寫針對(duì)異常進(jìn)行處理的代碼。當(dāng)try代碼塊中的程序發(fā)生了異常,系統(tǒng)會(huì)將這個(gè)異常的信息封裝成一個(gè)異常對(duì)象,并將這個(gè)對(duì)象傳遞給catch代碼塊。catch代碼塊需要一個(gè)形參指明它所能夠接收的異常類型,這個(gè)參數(shù)的類型必須是Exception類或其子類。四、異常4.2try…catch接下來(lái)使用try...catch語(yǔ)句對(duì)上例中出現(xiàn)的異常進(jìn)行捕獲。四、異常五、包(package)5.1包的定義與使用為了便于對(duì)硬盤上的文件進(jìn)行管理,通常都會(huì)將文件分目錄進(jìn)行存放。同理,在程序開(kāi)發(fā)中,也需要將編寫的類分目錄存放便于管理,為此,Java引入了包(package)機(jī)制,程序可以通過(guò)聲明包的方式對(duì)Java類定義目錄。Java中的包是專門用來(lái)存放類的,通常功能相同的類存放在相同的包中。在聲明包時(shí),使用package語(yǔ)句,具體示例如下:需要注意的是,包的聲明只能位于Java源文件的第一行。5.1包的定義與使用接下來(lái)以HelloWorld為例,講解如何使用包機(jī)制管理Java類文件。五、包(package)5.1包的定義與使用在當(dāng)前目錄下查看包名“cn.itcast”對(duì)應(yīng)的“cn\itcast”目錄,發(fā)現(xiàn)該目錄下存放了HelloWorld.class文件。五、包(package)5.2import語(yǔ)句在程序開(kāi)發(fā)中,位于不同包中的類經(jīng)常需要互相調(diào)用。例如,目錄“D:\packageTest”下有兩個(gè)源文件,分別是Student.java和Test.java。五、包(package)5.2import語(yǔ)句Java中提供了import關(guān)鍵字,使用import可以在程序中一次導(dǎo)入某個(gè)指定包下的類,具體格式如下所示:需要注意的是,import通常出現(xiàn)在package語(yǔ)句之后,類定義之前。修改后的Test類如圖所示。五、包(package)5.2import語(yǔ)句在JDK中,不同功能的類都放在不同的包中,其中Java的核心類主要放在java這個(gè)包以及其子包下,Java擴(kuò)展的大部分類都放在javax包以及其子包下。為了便于后面的學(xué)習(xí),接下來(lái)簡(jiǎn)單介紹Java語(yǔ)言中的常用包。java.lang:包含Java語(yǔ)言的核心類,如String、Math、System和Thread類等,使用這個(gè)包中的類無(wú)須使用import語(yǔ)句導(dǎo)入,系統(tǒng)會(huì)自動(dòng)導(dǎo)入這個(gè)包下的所有類。java.util:包含Java中大量工具類、集合類等,例如Arrays、List、Set等。:包含Java網(wǎng)絡(luò)編程相關(guān)的類和接口。java.io:包含了Java輸入、輸出有關(guān)的類和接口。java.awt:包含用于構(gòu)建圖形界面(GUI)的相關(guān)類和接口。五、包(package)在Java中
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 46991.1-2025電動(dòng)汽車車載動(dòng)力電池耐久性要求及試驗(yàn)方法第1部分:輕型汽車
- 湖南省衡陽(yáng)市2025-2026學(xué)年八年級(jí)上學(xué)期1月期末考試英語(yǔ)試卷(含答案無(wú)聽(tīng)力原文及音頻)
- 貴州省銅仁市松桃民族中學(xué)2025-2026學(xué)年高二上學(xué)期期末模擬測(cè)試化學(xué)試卷(含答案)
- 2026年上海市寶山區(qū)初三一模語(yǔ)文試卷(含答案)
- 2025-2026學(xué)年遼寧省丹東五中九年級(jí)(上)期末數(shù)學(xué)試卷(含答案)
- 五年級(jí)上冊(cè)語(yǔ)文期末考試卷及答案
- 衛(wèi)生事業(yè)單位面試真題及答案
- 裝飾工程、防水工程試題答案
- 部編版三年級(jí)語(yǔ)文(下冊(cè))期末試卷及答案(今年)
- 雙十一光棍節(jié)酒店策劃
- 2026中央廣播電視總臺(tái)招聘124人參考筆試題庫(kù)及答案解析
- DB15∕T 3725-2024 煤矸石路基設(shè)計(jì)與施工技術(shù)規(guī)范
- 鋼結(jié)構(gòu)屋架拆除與安裝工程施工方案
- 動(dòng)力電池儲(chǔ)能車間事故應(yīng)急處置預(yù)案
- 床上擦浴及洗頭課件
- JIS K 6253-1-2012 硫化橡膠或熱塑性橡膠硬度測(cè)定.第1部分-一般指南
- 小學(xué)心理教學(xué)工作總結(jié)
- GB/T 5576-2025橡膠和膠乳命名法
- 【語(yǔ)文】荊州市小學(xué)三年級(jí)上冊(cè)期末試卷(含答案)
- 壓瘡及失禁性皮炎護(hù)理
- 鐵路運(yùn)輸安全管理體系建設(shè)方案
評(píng)論
0/150
提交評(píng)論