資源描述:
《Java就業(yè)培訓(xùn)教程第四章 面向?qū)ο?下)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、第4章面向?qū)ο螅ㄏ拢?.1類的繼承面向?qū)ο蟮闹匾厣痪褪悄軌蚴褂靡郧敖ㄔ斓念惖姆椒ê蛯傩浴Mㄟ^簡單的程序代碼來建造功能強大的類,會節(jié)省很多編程時間,而且更為重要的是,這樣做可以減少代碼出錯的機會。類的繼承講的就是這方面的問題。4.1.1繼承的特點我們還是通過一個實際應(yīng)用問題,來引出類的繼承這個問題的講解。我們常常在編程中遇到下面的情況:publicclassPerson{publicStringname;publicintage;publicStringgetInfo(){...}}publicclassStudent{pub
2、licStringname;publicintage;publicStringschool;publicStringgetInfo(){...}publicStringstudy(){...}}在上面的程序中,我們先定義了一個Person類來處理個人信息,接著又定義一個Student類來處理學(xué)生信息,結(jié)果發(fā)現(xiàn)Student類中包含了Person類的所有屬性和方法。針對這種情況,Java為我們引入了繼承這個概念,我們只要表明類Student繼承了類Person的所有屬性與方法,我們就不用在類Student中重復(fù)書寫類Person中的
3、代碼了,更確切的說是簡化了類的定義。我們是通過extends關(guān)鍵字來表明類Student具有類Person的所有屬性與方法,如果讓Student類來繼承Person類,Person類里面的所有可繼承的屬性和方法(后面我們會講到什么是可繼承的,什么是受限制的),都可以在Student類里面使用了,也就是說Student這個類繼承了Person類,擁有了Person類所有的特性,除此之外還有一些自己的特性,如:學(xué)生有學(xué)校名和學(xué)習(xí)的動作。因此,我們就說Person是Student的父類(也叫基類或超類),Student是Person的子
4、類。例如上面的兩個類,我們就可以簡寫成下面的代碼:publicclassPerson{publicStringname;publicintage;publicStringgetInfo(){...}}publicclassStudentextendsPerson148{publicStringschool;publicStringstudy(){...}}完整代碼如下:程序清單:Student.javaclassPerson{publicStringname;publicintage;publicPerson(Stringname
5、,intage){this.name=name;this.age=age;}publicPerson()//如果你不寫這個構(gòu)造函數(shù),看看對類Student有什么影響。{}publicvoidgetInfo(){System.out.println(name);System.out.println(age);}}classStudentextendsPerson{publicvoidstudy(){System.out.println("Studding");}publicstaticvoidmain(String[]args){P
6、ersonp=newPerson();p.name="person";p.age=30;p.getInfo();Students=newStudent();s.name="student";s.age=16;s.getInfo();s.study();}148}要在以前的類上構(gòu)造新類,必須要在新類的聲明中擴展以前的類。通過擴展一個超類,你可以得到這個類的一個拷貝,并可以在這個基礎(chǔ)上添加新的屬性和方法。如果你對這個新類并不做什么添加工作,那么它的工作情況會與超類完全相同。新類中會含有超類所聲明或繼承的所有屬性和方法。在類的繼承中,有
7、這樣的一些細節(jié)問題:1).通過繼承可以簡化類的定義,我們已經(jīng)在上面的例子中了解到了。2).Java只支持單繼承,不允許多重繼承。在Java中,一個子類只能有一個父類,不允許一個類直接繼承多個類,但一個類可以被多個類繼承,如類X不可能既繼承類Y又繼承類Z。3).可以有多層繼承,即一個類可以繼承某一個類的子類,如類B繼承了類A,類C又可以繼承類B,那么類C也間接繼承了類A。這種應(yīng)用如下所示:classA{}classBextendsA{}classCextendsB{}4).子類繼承父類所有的成員變量和成員方法,但不繼承父類的構(gòu)造方法
8、。在子類的構(gòu)造方法中可使用語句super(參數(shù)列表)調(diào)用父類的構(gòu)造方法。如:我們?yōu)镾tudent類增加一個構(gòu)造方法,在這個構(gòu)造方法中我們用super明確指定調(diào)用父類的某個構(gòu)造方法。classStudentextendsPerson{publicSt