




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
延時符智能家居系統SmartHomeSystem團隊:夏繼媛晏凱唐建東吳麗春
張立涓許亞蘭張秀君面向對象程序設計(二)類的繼承final關鍵字抽象類和接口包異常訪問控制一、
類的繼承1.1繼承的概念程序中,繼承描述的是事物之間的所屬關系,通過繼承可以使多種事物之間形成一種關系體系。在Java中,類的繼承是指在一個現有類的基礎上去構建一個新的類,構建出來的新類被稱作子類,現有類被稱作父類,子類會自動擁有父類所有可繼承的屬性和方法。在程序中,如果想聲明一個類繼承另一個類,需要使用extends關鍵字,接下來通過一個案例來學習子類是如何繼承父類的。1.1繼承的概念程序中,繼承描述的是事物之間的所屬關系,通過繼承可以使多種事物之間形成一種關系體系。在Java中,類的繼承是指在一個現有類的基礎上去構建一個新的類,構建出來的新類被稱作子類,現有類被稱作父類,子類會自動擁有父類所有可繼承的屬性和方法。在程序中,如果想聲明一個類繼承另一個類,需要使用extends關鍵字,接下來通過一個案例來學習子類是如何繼承父類的。一、
類的繼承一、
類的繼承1.1繼承的概念在類的繼承中,需要注意一些問題,具體如下:1、在Java中,類只支持單繼承,不允許多重繼承,也就是說一個類只能有一個直接父類,例如下面這種情況是不合法的。2、多個類可以繼承一個父類,例如下面這種情況是允許的。一、
類的繼承1.1繼承的概念在類的繼承中,需要注意一些問題,具體如下:3、在Java中,多層繼承是可以的,即一個類的父類可以再去繼承另外的父類,例如C類繼承自B類,而B類又可以去繼承A類,這時,C類也可稱作A類的子類。下面這種情況是允許的。一、
類的繼承一、
類的繼承1.2重寫父類方法在繼承關系中,子類會自動繼承父類中定義的方法,但有時在子類中需要對繼承的方法進行一些修改,即對父類的方法進行重寫。需要注意的是,在子類中重寫的方法需要和父類被重寫的方法具有相同的方法名、參數列表以及返回值類型。一、類的繼承1.2重寫父類方法從上例的運行結果可以看出,當子類重寫父類的方法后,子類對象將無法訪問父類被重寫的方法,為了解決這個問題,在Java中專門提供了一個super關鍵字用于訪問父類的成員。例如訪問父類的成員變量、成員方法和構造方法。接下來分兩種情況來學習一下super關鍵字的具體用法。1、使用super關鍵字調用父類的成員變量和成員方法。具體格式如下:一、類的繼承1.2重寫父類方法2、使用super關鍵字調用父類的構造方法。具體格式如下:一、類的繼承1.2重寫父類方法上例中在實例化Dog對象時一定會調用Dog類的構造方法。從運行結果可以看出,Dog類的構造方法被調用時父類的構造方法也被調用了。需要注意的是,通過super調用父類構造方法的代碼必須位于子類構造方法的第一行,并且只能出現一次。將上例第11行代碼去掉,再次編譯程序會報錯:一、類的繼承一、
類的繼承1.2重寫父類方法在繼承關系中,子類會自動繼承父類中定義的方法,但有時在子類中需要對繼承的方法進行一些修改,即對父類的方法進行重寫。需要注意的是,在子類中重寫的方法需要和父類被重寫的方法具有相同的方法名、參數列表以及返回值類型。1.2重寫父類方法出錯的原因是,在子類的構造方法中一定會調用父類的某個構造方法。這時可以在子類的構造方法中通過super指定調用父類的哪個構造方法,如果沒有指定,在實例化子類對象時,會自動調用父類無參的構造方法。為了解決上述程序的編譯錯誤,可以在子類中顯示地調用父類中已有的構造方法,當然也可以選擇在父類中定義無參的構造方法,現將上例中的Animal類進行修改,如圖所示。一、類的繼承二、final關鍵字final關鍵字可用于修飾類、變量和方法,它有“這是無法改變的”或者“最終”的含義,因此被final修飾的類、變量和方法將具有以下特性:1、final修飾的類不能被繼承。2、final修飾的方法不能被子類重寫。3、final修飾的變量(成員變量和局部變量)是常量,只能賦值一次。2.1final關鍵字修飾類Java中的類被final關鍵字修飾后,該類將不可以被繼承,也就是不能夠派生子類。接下來通過一個案例來驗證。二、final關鍵字2.2final關鍵字修飾方法當一個類的方法被final關鍵字修飾后,這個類的子類將不能重寫該方法。二、final關鍵字2.2final關鍵字修飾方法當一個類的方法被final關鍵字修飾后,這個類的子類將不能重寫該方法。二、final關鍵字這是因為Animal類的shout()方法被final所修飾。由此可見,被final關鍵字修飾的方法為最終方法,子類不能對該方法進行重寫。正是由于final的這種特性,當在父類中的定義某個方法時,如果不希望被子類重寫,就可以使用final關鍵字修飾該方法。二、final關鍵字這是因為使用final關鍵字修飾成員變量時,虛擬機不會對其進行初始化。因此使用final修飾成員變量時,需要在定義變量的同時賦予一個初始值,下面將第2行代碼修改為:finalStringname="李芳";//為final關鍵字修飾的name屬性賦值三、抽象類和接口3.1抽象類當定義一個類時,常常需要定義一些方法來描述該類的行為特征,但有時這些方法的實現方式是無法確定的。針對上面描述的情況,Java允許在定義方法時不寫方法體,不包含方法體的方法為抽象方法,抽象方法必須使用abstract關鍵字來修飾,具體示例如下:3.1抽象類當一個類中包含了抽象方法,該類必須使用abstract關鍵字來修飾,使用abstract關鍵字修飾的類為抽象類,具體示例如下:三、抽象類和接口3.1抽象類在定義抽象類時需要注意,包含抽象方法的類必須聲明為抽象類,但抽象類可以不包含任何抽象方法,只需使用abstract關鍵字來修飾即可。另外,抽象類是不可以被實例化的,因為抽象類中有可能包含抽象方法,抽象方法是沒有方法體的,不可以被調用。如果想調用抽象類中定義的方法,則需要創建一個子類,在子類中將抽象類中的抽象方法進行實現。三、抽象類和接口3.2接口如果一個抽象類中的所有方法都是抽象的,則可以將這個類用另外一種方式來定義,即接口。在定義接口時,需要使用interface關鍵字來聲明,具體示例如下:從示例中會發現抽象方法breathe()并沒有使用abstract關鍵字來修飾,這是因為接口中定義的方法和變量都包含一些默認修飾符。接口中定義的方法默認使用“publicabstract”來修飾,即抽象方法。接口中的變量默認使用“publicstaticfinal”來修飾,即全局常量。三、抽象類和接口3.2接口由于接口中的方法都是抽象方法,因此不能通過實例化對象的方式來調用接口中的方法。此時需要定義一個類,并使用implements關鍵字實現接口中所有的方法。三、抽象類和接口四、異常4.1什么是異常在程序運行的過程中,也會發生這種非正常狀況,比如程序運行時磁盤空間不足,網絡連接中斷,被裝載的類不存在。針對這種情況,在Java語言中,引入了異常,以異常類的形式對這些非正常情況進行封裝,通過異常處理機制對程序運行時發生的各種問題進行處理。接下來通過一個案例來認識一下什么是異常:四、異常4.1什么是異常在程序運行的過程中,也會發生這種非正常狀況,比如程序運行時磁盤空間不足,網絡連接中斷,被裝載的類不存在。針對這種情況,在Java語言中,引入了異常,以異常類的形式對這些非正常情況進行封裝,通過異常處理機制對程序運行時發生的各種問題進行處理。接下來通過一個案例來認識一下什么是異常:程序發生了算數異常(ArithmeticException),這個異常是由于程序中的第3行代碼調用divide()方法時傳入了參數0,在方法中的第8行代碼的運算中出現了被0除的錯誤。在這個異常發生后,程序會立即結束,無法繼續向下執行。4.1什么是異常在上例中產生了一個ArithmeticException異常,ArithmeticException異常只是Java異常類中的一種,在Java中還提供了大量的異常類,這些類都繼承自java.lang.Throwable類。接下來通過一張圖來展示Throwable類的繼承體系。四、異常4.1什么是異常Throwable有兩個直接子類Error和Exception,其中Error代表程序中產生的錯誤,Exception代表程序中產生的異常。Error類稱為錯誤類,它表示Java運行時產生的系統內部錯誤或資源耗盡的錯誤,是比較嚴重的,僅靠修改程序本身是不能恢復執行的。舉一個生活中的例子,在蓋樓的過程中因偷工減料,導致大樓坍塌,這就相當于一個Error。使用java命令去運行一個不存在的類就會出現Error錯誤。四、異常4.1什么是異常Throwable有兩個直接子類Error和Exception,其中Error代表程序中產生的錯誤,Exception代表程序中產生的異常。Exception類稱為異常類,它表示程序本身可以處理的錯誤,在開發Java程序中進行的異常處理,都是針對Excption類及其子類。在Exception類的眾多子類中有一個特殊的RuntimeException類,該類及其子類用于表示運行時異常,除了此類,Exception類下所有其它的子類都用于表示編譯時異常。四、異常4.1什么是異常Throwable類中的常用方法四、異常4.2try…catch上例由于發生了異常,程序立即終止,無法繼續向下執行。為了解決這樣的問題,Java中提供了一種對異常進行處理的方式——異常捕獲。異常捕獲通常使用try…catch語句,具體語法格式如下:其中在try代碼塊中編寫可能發生異常的Java語句,catch代碼塊中編寫針對異常進行處理的代碼。當try代碼塊中的程序發生了異常,系統會將這個異常的信息封裝成一個異常對象,并將這個對象傳遞給catch代碼塊。catch代碼塊需要一個形參指明它所能夠接收的異常類型,這個參數的類型必須是Exception類或其子類。四、異常4.2try…catch接下來使用try...catch語句對上例中出現的異常進行捕獲。四、異常五、包(package)5.1包的定義與使用為了便于對硬盤上的文件進行管理,通常都會將文件分目錄進行存放。同理,在程序開發中,也需要將編寫的類分目錄存放便于管理,為此,Java引入了包(package)機制,程序可以通過聲明包的方式對Java類定義目錄。Java中的包是專門用來存放類的,通常功能相同的類存放在相同的包中。在聲明包時,使用package語句,具體示例如下:需要注意的是,包的聲明只能位于Java源文件的第一行。5.1包的定義與使用接下來以HelloWorld為例,講解如何使用包機制管理Java類文件。五、包(package)5.1包的定義與使用在當前目錄下查看包名“cn.itcast”對應的“cn\itcast”目錄,發現該目錄下存放了HelloWorld.class文件。五、包(package)5.2import語句在程序開發中,位于不同包中的類經常需要互相調用。例如,目錄“D:\packageTest”下有兩個源文件,分別是Student.java和Test.java。五、包(package)5.2import語句Java中提供了import關鍵字,使用import可以在程序中一次導入某個指定包下的類,具體格式如下所示:需要注意的是,import通常出現在package語句之后,類定義之前。修改后的Test類如圖所示。五、包(package)5.2import語句在JDK中,不同功能的類都放在不同的包中,其中Java的核心類主要放在java這個包以及其子包下,Java擴展的大部分類都放在javax包以及其子包下。為了便于后面的學習,接下來簡單介紹Java語言中的常用包。java.lang:包含Java語言的核心類,如String、Math、System和Thread類等,使用這個包中的類無須使用import語句導入,系統會自動導入這個包下的所有類。java.util:包含Java中大量工具類、集合類等,例如Arrays、List、Set等。:包含Java網絡編程相關的類和接口。java.io:包含了Java輸入、輸出有關的類和接口。java.awt:包含用于構建圖形界面(GUI)的相關類和接口。五、包(package)在Java中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中英語學術詞匯教學與口語表達能力提升策略論文
- 節約用蒸汽管理制度
- 茶餐廳消防管理制度
- 財務管理學及財務知識課后分析答案(一)
- 管理心理學案例分析-摩托羅拉公司的內部激勵
- 自動化儀表與監測在工業中變革與創新
- 財稅實務企業并購重組的企業所得稅與土地增值稅政策比較分析
- 2025年重慶一中中考數學三模試卷
- 設備綜合管理制度范本大全
- 財務會計實訓個人心得體會10篇
- 監理抽檢表 - 05排水工程
- 《標本的采集與轉運》課件
- 安全生產事故案例分析課件
- 運用PDCA循環減少靜脈用藥集中調配貼簽錯誤的探討靜配中心質量持續改進案例
- 液化氣站雙控風險告知卡
- 小學班主任如何做好學生的思政教育工作
- 中國特色社會主義思想概論 課件 第四章 堅持以人民為中心
- 西班牙語入門語法(修正)
- 2023年06月湖北孝感市檢察機關招考聘用雇員制檢察輔助人員73人筆試題庫含答案詳解
- 財新穿透安邦資本魔術
- 當代大學德語4答案(1-12)
評論
0/150
提交評論