第4章 類的繼承和接口的擴展.ppt_第1頁
第4章 類的繼承和接口的擴展.ppt_第2頁
第4章 類的繼承和接口的擴展.ppt_第3頁
第4章 類的繼承和接口的擴展.ppt_第4頁
第4章 類的繼承和接口的擴展.ppt_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、第4類繼承和接口擴展,本章結(jié)構(gòu),類繼承多級繼承重寫類方法final使用和抽象類對象類接口包本章中的問題,類繼承,類繼承是面向?qū)ο缶幊碳夹g的基石,使程序員可以根據(jù)特定層次在Java中創(chuàng)建類,繼承的類稱為超類。繼承超類的類在子類(subclass)子類中具有超類定義的所有實例變量和方法,但是,如果超類的成員變量或方法定義為private,則子類可以復蓋子類無法直接訪問基類的方法。如果您沒有在子類中重寫基類的方法,則可以直接在子類中調(diào)用基類的方法。4.1.1是創(chuàng)建子類的機制,繼承是從現(xiàn)有類創(chuàng)建新類的機制。繼承允許您創(chuàng)建具有公共屬性的通用類,并基于該通用類創(chuàng)建具有特殊屬性的新類。繼承的類稱為子類(su

2、bclass),繼承的類稱為超類(或超類,superclass)。直接或間接繼承的類是父類。子類繼承父類的狀態(tài)和行為的同時,還可以修改父類的狀態(tài),重寫父類的行為并添加新狀態(tài)和行為。Java不支持多個繼承。創(chuàng)建4.1.1子類,然后在類聲明中添加extends子句以創(chuàng)建類子類。類子類extends SuperClass上述代碼將子類聲明為SuperClass的直接子類。如果超類是類的子類,則該子類也是該類的(間接)子類。子類可以繼承父類的成員變量和方法。如果存在基本extends子句,則此類是java.lang.Object的子類。子類可以繼承父類中訪問權(quán)限設置為public、protected和

3、default的成員變量和方法。但是,不能繼承具有private訪問權(quán)限的成員變量和方法。創(chuàng)建4.1.1子類、創(chuàng)建4.1.1子類、創(chuàng)建4.1.1子類,MammalClass類具有DogClass和CatClass的相同屬性,例如name、eyeColor和age?,F(xiàn)在可以使用繼承重建DogClass和CatClass。public class dog class extends mammal class boolean has tail;/name,eyeColor,age是父類中的public DogClass() /隱式調(diào)用super()name=chase;EyeColor=Black;

4、age=2;HasTail=true,創(chuàng)建4.1.1子類,示例4-1繼承的簡單示例class Father /父類private int moneyFloat weight,heightString headString speak(String s)return s;Class Son extends Father /子類String hand,foot、Weight、height、head、Speak();Hand,foot,5.1.1創(chuàng)建子類,示例4-1繼承的簡單示例public class test extend public static void main(string args)

5、son boy=newBoy.weight=120fBoy.height=1.8fBoy.head=一個頭部;Boy.hand=兩只手;Boy.foot=雙腳;System.out.println(我是兒子);System.out.println(包括: boy.hand、boy.foot、boy.head、heavy.weight和high boy.weight,以上程序運行結(jié)果如下:我創(chuàng)建了兒子3360雙手、雙腳、頭部、重量120.0、高度1.8、4 . 1 . 1 . 1 . 1子類,如果子類和父類不在同一包中,則子類可以將父類的protected,public modified成員變量

6、繼承為子類的成員變量,父類的protected,public modified此外,如果子類和父類不在同一包中,則子類不能繼承父類的default變量和default方法。,創(chuàng)建4.1.1子類,示例4-2另一個包中的類的簡單示例/house hold . Java packagexing . house;Public class HouseHold /主頁類protected String address/地址public String surnname/姓String givenname/名稱public house hold(string add)address=add;protected

7、 string get address()return address;void set money(string newadd)address=newadd;void set address(string add)address=add;創(chuàng)建4.1.1子類,/Mikey . Java 3360 package xing . friend;import xing . house . house hold;public class Mikey extends house hold public Mikey()super(star flight street 110);public static

8、void main(string args)Mikey Mikey=new Mikey();/Mikey . givenname= Johnson ;/無效的mikey.surnname=Math/合法。Mikey . address=star flight street 110;/legal . string m=Mikey . get address();/合法/Mikey . set address(star flight street 110);/非法。system . out . print ln(Mikey . surn name:m);創(chuàng)建4.1.1子類,/Mikey . Jav

9、a 3360 package xing . friend;import xing . house . house hold;public class Mikey extends house hold public Mikey()super(star flight street 110);public static void main(string args)Mikey Mikey=new Mikey();/Mikey . givenname= Johnson ;/無效的mikey.surnname=Math/合法。Mikey . address=star flight street 110;/

10、legal . string m=Mikey . get address();/合法/Mikey . set address(star flight street 110);/非法。system . out . print ln(Mikey . surn name:m);4.1.1子類的創(chuàng)建、程序編譯和執(zhí)行過程如下:關鍵字super,在很多情況下,必須保留父類的實現(xiàn)詳細信息,并且子類訪問這些詳細信息時,必須實現(xiàn)父類的閃回形狀。Java是使用super關鍵字實現(xiàn)此功能的完全面向?qū)ο蟮恼Z言。Super的作用主要有兩種。調(diào)用超類的構(gòu)造函數(shù)訪問子類的成員隱藏的超類成員。在Java中,同一超類可以有多個

11、子類,繼承的super對象,類的繼承,超類、子類、超類的變量和方法調(diào)用,子類的變量和方法調(diào)用,繼承的構(gòu)造函數(shù),類的繼承,Public class cartoon extends drawing cartingpublic static void main(string args)cartoon c=new cartoon();class art()system . out . print ln(art constructor);class drawing extends artdrawing()system . out . print ln(drawing constructor);art c

12、onstructor drawing constructor cartoon constructor,子類的配置方法必須調(diào)用父類的配置方法,class drawing extends art/* drawing()system。*/、art constructor cartoon constructor、public class cartoon extends drawing cartoon()super();system . out . print ln(cartoon constructor);public static void main(string args)cartoon c=ne

13、w cartoon();淺談繼承的配置方法、類繼承、public class chess extends board gamechess()super(3)。system . out . print ln(cartoon constructor);public static void main(string args)chess c=new chess();class game game(int I)system . out . print ln( game constructor );class board game extends game board game(int I)super(I

14、);system . out . print ln( board game constructor );子類的構(gòu)造方法必須以任何形式調(diào)用父類的構(gòu)造方法。否則,編譯將出錯,并且繼承的配置方法、類的繼承、類a (inti)、類b extends a b (string s)、b(string s)super();4.1.4多子類繼承相同的父類示例4.5,4.2多級繼承;使用Java,多級繼承可以通過從類層次結(jié)構(gòu)繼承的級別關系調(diào)用,并且必須是子類構(gòu)造函數(shù)的第一個執(zhí)行語句(從父類到子類super關鍵字)。無論是否使用super關鍵字,此順序都不會更改,如果子類的構(gòu)造函數(shù)中沒有顯式調(diào)用super,則基類

15、或非參數(shù)構(gòu)造函數(shù)將在父類中運行。請參見示例4.6和示例4.7,4.3重寫類方法。在子類中,可以重寫類方法以遮蓋超類的方法。如果子類中的方法之一與其超類中的方法具有相同的方法名稱、類型和參數(shù),則子類中的方法將復蓋超類中的方法。在子類中調(diào)用在子類中復蓋的方法時,在超類中定義的方法將隱藏。示例4.8和示例4.9,4.1.2引用成員變量的排除和方法復蓋,如果在子類中定義的成員變量與父類中的成員變量同名,則稱為子類的成員變量隱藏父類中的成員變量。如果方法在子類中定義,并且其方法名稱、返回類型、參數(shù)數(shù)和類型與父類中的方法完全相同,則父類中的方法將隱藏。據(jù)說,此時重寫了父類的方法。子類可以通過復蓋成員變量的

16、隱藏和方法將父類的狀態(tài)和行為更改為自己的狀態(tài)和行為。4.1.2成員變量的排除和方法重寫,例如類超類/超類inty:Void setY()y=0;class sub class extends super class int y;/父類變量y隱藏的void setY() /父類的方法setY()y=1;4.4 final允許在繼承中使用final執(zhí)行兩個功能。也就是說,如果禁止類重寫方法以防止類繼承,則final關鍵字,1)如果final touch up成員變量之前有final touch up,則此成員變量將成為常量,一旦分配了值,就不能在程序的其它地方修改該值。Final type var

17、iableName定義為。例如,class consttime express final int max hour=23;Final int MaxMinute=59Final int MaxSecond=59,final關鍵字,2)final touch up方法的final修飾符指示不能用子類復蓋方法。具有Final修飾符的方法稱為最終方法。除非將Java中的方法描述為最終方法,否則可以復蓋Java中的方法。Java之所以這樣規(guī)定,主要是因為Java的純面向?qū)ο筇匦?,使用疊加作為象對象的重要特征實現(xiàn)了最大限度的實現(xiàn)。有時,將方法聲明為最終方法會增強代碼的安全性。使用方式如下:Final returntype method name(paramlist)示例:final int getlength (strings),final關鍵字,3)不能繼承final類fi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論