資源描述:
《java類(lèi)的繼承和多態(tài)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第八章類(lèi)的繼承和多態(tài)教學(xué)目的:深刻理解類(lèi)的繼承教學(xué)內(nèi)容:1、類(lèi)的繼承和實(shí)現(xiàn)2、構(gòu)造器的調(diào)用3、防止類(lèi)的繼承一、類(lèi)的繼承和實(shí)現(xiàn)所謂繼承就是在已經(jīng)存在類(lèi)的基礎(chǔ)上再擴(kuò)展新的類(lèi)。已經(jīng)存在的類(lèi)我們稱父類(lèi)、超類(lèi)、基類(lèi)。新產(chǎn)生的類(lèi),我們稱子類(lèi)、派生類(lèi)。子類(lèi)擁有父類(lèi)的所有特性。當(dāng)然我們也可以在子類(lèi)中添加新的方法和成員變量,這些新添加的方法和成員變量?jī)H僅屬于子類(lèi)。在Java中通過(guò)關(guān)鍵字“extends”來(lái)實(shí)現(xiàn)。比如在學(xué)生類(lèi)中,有一種特殊的學(xué)生就是學(xué)生干部,他們出來(lái)?yè)碛泻推胀▽W(xué)生一樣的方法和屬性之外,有的有一個(gè)職務(wù)描述(Duty)。我們定義學(xué)生管理類(lèi)ClassManger,它擁有父類(lèi)
2、的所有的方法和屬性。一般來(lái)講,應(yīng)該把相對(duì)通用的方法都放在父類(lèi)中,只有更具體和專(zhuān)門(mén)的方法放在子類(lèi)中。1、對(duì)于學(xué)生干部而言,我們要添加一個(gè)屬性就可以了privateStringduty=””;2、但是student里的print()就不能滿足我們的ClassMange的要求了。而且student的構(gòu)造方法也不能直接用來(lái)ClassMange上。那么我們?cè)趺炊xClassMange()和print()呢?如果重新寫(xiě)很麻煩,可不可以在父類(lèi)方法的基礎(chǔ)上修改呢?只要使用關(guān)鍵字super就可以了。this:一個(gè)對(duì)象的引用。super:是用來(lái)告訴編譯器調(diào)用父類(lèi)的方法的關(guān)鍵字。代碼如
3、下:classschool{publicstaticvoidmain(String[]args){student[]stu=newstudent[3];stu[0]=newClassMange("章三","2009001","班長(zhǎng)");stu[1]=newstudent("李四","2009002");stu[2]=newstudent("王五","2009003");/*for(inti=0;i4、print();}}classstudent{privateStringname;//定義學(xué)生姓名privateStringID;//定義學(xué)生學(xué)號(hào)privateStringsex="";//定義學(xué)生性別privateStringspeci="";//定義學(xué)生專(zhuān)業(yè)//構(gòu)造方法publicstudent(Stringname,StringID){this.name=name;this.ID=ID;}publicstudent(Stringname,StringID,Stringsex,Stringspeic){this.name=name;this.ID=ID;thi
5、s.sex=sex;this.speci=speic;}//訪問(wèn)器publicStringgetName(){returnname;}publicStringgetID(){returnID;}publicStringgetSex(){returnsex;}publicStringgetSpeci(){returnspeci;}//設(shè)置器publicvoidsetSex(Stringsex){this.sex=sex;}publicvoidsetSpeci(Stringspeci){this.speci=speci;}//打印方法publicvoidprint()
6、{System.out.println("學(xué)生學(xué)號(hào):"+ID+"學(xué)生姓名:"+name);if(!sex.equals(""))System.out.println("性別="+sex);if(!speci.equals(""))System.out.println("專(zhuān)業(yè)="+speci);}}classClassMangeextendsstudent{privateStringduty="";publicClassMange(Stringname,StringID,Stringduty){super(name,ID);//調(diào)用父類(lèi)的構(gòu)造方法,初始化相關(guān)字段
7、this.duty=duty;}publicStringgetDuty(){returnduty;}publicvoidprint(){super.print();if(!duty.equals(""))System.out.println("職務(wù):"+duty);}}總結(jié)子類(lèi)和父類(lèi)的關(guān)系:1、子類(lèi)完全繼承父類(lèi)的所有的屬性和方法,子類(lèi)的對(duì)象只可以調(diào)用父類(lèi)里公共的屬性和方法。2、子類(lèi)可以添加自己的屬性和方法。3、子類(lèi)調(diào)用父類(lèi)的構(gòu)造方法使用spuer(),但是要寫(xiě)在子類(lèi)構(gòu)造器的第一行。4、子類(lèi)可以使用調(diào)用spuer.方法名(),調(diào)用父類(lèi)中的方法。5、子類(lèi)重寫(xiě)父類(lèi)中的同
8、名方法叫做