




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
實驗四類的繼承性和多態(tài)性【開發(fā)語言及實現(xiàn)平臺或?qū)嶒灜h(huán)境】Windows2000或XP,JDK1.6與Eclipse【實驗?zāi)康摹坷斫夂驼莆疹惖睦^承和多態(tài)理解父類和子類的轉(zhuǎn)化。【實驗要求】1.掌握類的繼承法和多態(tài)。2.掌握父類和子類的轉(zhuǎn)化?!緦嶒瀮?nèi)容】一類的繼承面向?qū)ο蟮闹凶顬閺姶蟮墓δ苁穷惖睦^承,繼承允許你在一個已經(jīng)存在的類之上編寫新的程序。比如想建立一個FillRect類,該類可以使用Rectangle類中所有已定義的數(shù)據(jù)和成員方法,如:width、height等數(shù)據(jù)和getArea等方法,就可以通過繼承來實現(xiàn)。為了繼承Rectangle類,你必須引用舊的Rectangle類(使用extends關(guān)鍵字),并且在新類的說明中引用它。如:classFillRectextendsRectangle{…}1.VehicleDemo.java//類的繼承classVehicle{//車輛類intVehicleID;//性質(zhì):車輛的ID號voidsetID(intID){VehicleID=ID;}voiddisplayID(){//方法:顯示ID號System.out.println("車輛的號碼是:"+VehicleID);}}classCarextendsVehicle{//轎車類intmph;//時速voidsetMph(intmph){this.mph=mph;}voiddisplayMph(){//顯示轎車的時速System.out.println("轎車的時速是:"+mph);}}publicclassVehicleDemo{publicstaticvoidmain(String[]args){//產(chǎn)生一個車輛對象Carbenz=newCar();benz.setID(9527);benz.setMph(10);benz.displayID();benz.displayMph();}}2.成員變量的隱藏和方法的重寫子類通過隱藏父類的成員變量和重寫父類的方法,可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為,例如:classA{intx;voidsetX(){x=0;}}classBextendsA{intx;//隱藏了父類的變量xvoidsetX(){//重寫了父類的方法setX()x=5;}}3.關(guān)鍵字super、Java中通過super來實現(xiàn)對父類成員的訪問,super用來引用當前對象的父類。在擴展類的所有非靜態(tài)方法中均可使用super關(guān)鍵字。在訪問字段和調(diào)用方法時,super將當前對象作為其超類的一個實例加以引用。super的使用有三種情況:訪問父類被隱藏的成員變量,如:super.variable;調(diào)用父類中被重寫的方法,如:super.method([paramlist]);調(diào)用父類的構(gòu)建器,如:super([paramlist]);SuperDemo.javaclassFather{intx;Father(){x=3;System.out.println("CallingFather:x="+x);}voiddoSomething(){System.out.println("CallingFather.doSomething()");}}classSonextendsFather{intx;Son(){//調(diào)用父類的構(gòu)造方法//super()必須放在方法中的第一句super();x=5;System.out.println("CallingSon:x="+x);}voiddoSomething(){super.doSomething();//調(diào)用父類的方法System.out.println("CallingSon.doSomething()");System.out.println("Father.x="+super.x+"Son.x="+x);}}publicclassSuperDemo{publicstaticvoidmain(Stringargs[]){Sonson=newSon();son.doSomething();}}程序運行結(jié)果:CallingFather:x=3CallingSon:x=5CallingFather.doSomething()CallingSon.doSomething()Father.x=3Son.x=5二類的多態(tài)性(1)編譯時多態(tài)。在編譯階段,編譯器會根據(jù)參數(shù)的不同來靜態(tài)確定調(diào)用相應(yīng)的方法,即具體調(diào)用哪個被重載的方法。(2)運行時多態(tài)。由于子類繼承了父類所有的屬性(私有的除外),所以子類對象可以作為父類對象使用。程序中凡是使用父類對象的地方,都可以用子類對象來代替。一個對象可以通過引用子類的實例來調(diào)用子類的方法?!讨剌d方法的調(diào)用原則:Java運行時系統(tǒng)根據(jù)調(diào)用該方法的實例,來決定調(diào)用哪個方法。對子類的一個實例,如果子類重寫了父類的方法,則運行時系統(tǒng)調(diào)用子類的方法;如果子類繼承了父類的方法(未重寫),則運行時系統(tǒng)調(diào)用父類的方法。1.SuberClass.javaclassBaseClass{publicBaseClass(){System.out.println("NowinBaseClass()");init();}publicvoidinit(){System.out.println("NowinBaseClass.init()");}}publicclassSuberClassextendsBaseClass{publicSuberClass(){System.out.println("NowinSuberClass()");}publicvoidinit(){System.out.println("NowinSuberClass.init()");}publicstaticvoidmain(String[]args){System.out.println("創(chuàng)建BaseClass對象:");newBaseClass();System.out.println("創(chuàng)建SuberClass對象:");newSuberClass();}}程序運行結(jié)果:創(chuàng)建BaseClass對象:NowinBaseClass()NowinBaseClass.init()創(chuàng)建SuberClass對象:NowinBaseClass()NowinSuberClass.init()NowinSuberClass()三.static有時候,可能需要同類的各對象之間共享某些變量或者方法,這些共享的變量或是方法被稱為類變量或者類方法。類變量或者類方法統(tǒng)稱為靜態(tài)對象。實例√每個實例對象對類變量的改變都會影響到其他的實例對象。類變量可通過類名直接訪問,無需先生成一個實例對象,也可以通過實例對象訪問類變量。√類方法不能訪問實例變量,只能訪問類變量。類方法可以由類名直接調(diào)用,也可由實例對象進行調(diào)用。類方法中不能使用this或super關(guān)鍵字。√靜態(tài)變量可以有初值,就象實例變量一樣。靜態(tài)變量和方法都是通過類名字來訪問的。為方便起見,也可以用具體對象來訪問。例3.3.2StaticDemo2.java//靜態(tài)成員的使用classStaticDemo2{//實例變量inti;//靜態(tài)變量staticintj;staticintarr[]=newint[12];//靜態(tài)初始成員,初始化數(shù)組static{for(inti=0;i<arr.length;i++)arr[i]=i;}//實例方法voidsetI(inti){this.i=i;}//靜態(tài)方法staticvoidsetJ(intj){StaticDemo2.j=j;}publicstaticvoidmain(String[]args){StaticDemo2sd2=newStaticDemo2();StaticDemo2.j=2;//正確:通過類訪問靜態(tài)變量sd2.j=3;//正確:通過實例訪問靜態(tài)變量StaticDemo2.setJ(2);//正確:通過類訪問靜態(tài)方法sd2.setJ(3);//正確:通過實例訪問靜態(tài)方法sd2.i=4;//正確:通過實例訪問實例變量sd2.setI(7);//正確:通過實例訪問實例方法StaticDemo2.i=5;//錯誤:通過類訪問實例變量StaticDemo2.setI(5);//錯誤:通過類訪問實例方法}}【完成實驗項目】 1.三角形、梯形和圓形的類封裝實驗要求:編寫一個Java應(yīng)用程序,該程序中有3個類:Trangle、Leder和Circle,分別用來刻畫“三角形”、“梯形”和“圓形”。具體要求如下:a) Trangle類具有類型為double的三個邊,以及周長、面積屬性,Trangle類具有返回周長、面積以及修改三個邊的功能。另外,Trangle類還具有一個boolean型的屬性,該屬性用來判斷三個屬能否構(gòu)成一個三角形。b) Lader類具有類型double的上底、下底、高、面積屬性,具有返回面積的功能。c) Circle類具有類型為double的半徑、周長和面積屬性,具有返回周長、面積的功能。假如我們在開發(fā)一個系統(tǒng)時需要對員工進行建模,員工包含3個屬性:姓名、工號以及工資。經(jīng)理也是員工,除了含有員工的屬性外,另外還有一個獎金屬性。請使用繼承的思想設(shè)計出員工類和經(jīng)理類。要求類中提供必要的方法進行屬性訪問。classTrangle{ privatedoublea; privatedoubleb; privatedoublec;voidSetgetArea(){ doubles; s=(a+b+c)/2; s=(s*(s-a)*(s-b)*(s-c)); System.out.println(Math.sqrt(s));}voidSetgetzhouchang(){ doublep; p=a+b+c; System.out.println(p);}voidSetA(doubleA){ a=A;}voidSetB(doubleB){ b=B;}voidSetC(doubleC){ c=C;}}classLeder{ privatedoublea; privatedoubleb; private
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖北省中考語文模擬試卷(附答案)
- 2025屆山西省臨汾市高三上學(xué)期適應(yīng)性訓(xùn)練考試(一)地理含答案
- 2025年初中人教版八年級上冊第四章光現(xiàn)象 第四節(jié)光的折射 說課稿
- 4.2《光的反射》說課稿2025年初中人教版物理八年級上冊
- 2025年黨員領(lǐng)導(dǎo)干部網(wǎng)上學(xué)法用法考試題及答案(共八套)
- 設(shè)備委托處置協(xié)議
- 情人節(jié)露營活動方案
- 鑒賞美術(shù)的心得體會
- 酒店行政酒廊
- 銀行裝修售后服務(wù)備忘錄
- 招標代理機構(gòu)遴選投標方案(技術(shù)標)
- 汽車零部件加工行業(yè)工業(yè)互聯(lián)網(wǎng)智能工廠解決方案
- 摩西奶奶課件
- 知識產(chǎn)權(quán)保護服務(wù)項目創(chuàng)業(yè)計劃書【參考范文】
- 危險化學(xué)品物質(zhì)安全告知卡(硫酸)
- 項目分包單位管理辦法
- DB4403∕T 54-2020 停車庫(場)交通設(shè)施建設(shè)與管理規(guī)范
- 昌吉州園林賓館室內(nèi)裝修改造工程(一期)監(jiān)理大綱(共52頁)
- 檢驗檢測公司最新度員工考核表
- 生產(chǎn)安全事故風險評估報告(參考模板)
- 第一章控制系統(tǒng)的基本概念
評論
0/150
提交評論