




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、浙江大學(xué)城市學(xué)院實(shí)驗(yàn)報(bào)告課程名稱: 面向?qū)ο蟪绦蛟O(shè)計(jì) 實(shí)驗(yàn)項(xiàng)目名稱: 類繼承與接口 (三) 學(xué)生姓名: 專業(yè): 軟件工程 學(xué)號(hào): 實(shí)驗(yàn)地點(diǎn): 實(shí)驗(yàn)日期: 年 月 日【實(shí)驗(yàn)?zāi)康摹? 鞏固Java類繼承的相關(guān)知識(shí)2 理解對(duì)象上轉(zhuǎn)型技術(shù)的優(yōu)點(diǎn)和用途。3 掌握接口的特點(diǎn)4 接口與抽象類的異同之處【實(shí)驗(yàn)內(nèi)容】一、類繼承相關(guān)知識(shí)強(qiáng)化1. 執(zhí)行以下程序,給出執(zhí)行Bbb的結(jié)果,并說(shuō)明指出類Bbb的this.i與super.i的含義(即它們都對(duì)應(yīng)哪個(gè)變量)。 class Aaa int i; Aaa(int a) i = a;class Bbb extends Aaa int j,k; Bbb(int i) s
2、uper(i); j = this.i; k = super.i; public static void main(String args) Bbb b = new Bbb(18); System.out.println(b.j +"t" + b.k); 執(zhí)行Bbb的結(jié)果: this.i與super.i的含義(即它們都對(duì)應(yīng)哪個(gè)類中定義的變量):this.i和super.i 都對(duì)應(yīng)Aaa中的變量2接著上面例子,將類Bbb改寫(xiě)為以下代碼,請(qǐng)寫(xiě)出程序運(yùn)行結(jié)果,并說(shuō)明這個(gè)例子與上面例子的區(qū)別。class Bbb extends Aaa int i= -1,j= -1,k= -1;
3、/比上面例子增加一個(gè)實(shí)例變量i; Bbb(int i) super(i); j = this.i; /本語(yǔ)句含義是: k = super.i; /本語(yǔ)句含義是: public static void main(String args) Bbb b = new Bbb(18); System.out.println(b.j +"t" + b.k); 執(zhí)行Bbb的結(jié)果:這個(gè)例子與上面例子的區(qū)別:this.i對(duì)應(yīng)Bbb中的isuper.i對(duì)應(yīng)Aaa中的i 3.對(duì)以下程序,給出執(zhí)行Bbb的結(jié)果,并分析Bbb中main方法中a.show(1), b.show(1), c.show(1
4、)的結(jié)果。class Aaa void show() System.out.println("Aaa中定義的show()"); void show(int i) System.out.println("Aaa中定義的show(int i)"); class Bbb extends Aaa void show() System.out.println("Bbb中定義的show()"); public static void main(String args) Aaa a = new Aaa(); Bbb b = new Bbb(); A
5、aa c = new Bbb(); a.show(1); b.show(1); c.show(1); 執(zhí)行Bbb的結(jié)果:上面a.show(1)執(zhí)行了那個(gè)類中定義的方法: 上面b.show(1);執(zhí)行了那個(gè)類中定義的方法: 上面c.show(1)執(zhí)行了那個(gè)類中定義的方法: 分析: 因?yàn)閳?zhí)行的是有參數(shù)的void show()所以調(diào)用的是Aaa中的方法。C是上轉(zhuǎn)型所以也是調(diào)用Aaa中的方法4. 對(duì)以下程序,給出執(zhí)行Bbb的結(jié)果,并分析這個(gè)例子結(jié)果與前面第4個(gè)例子,你可以得出什么結(jié)論。class Aaa int i = 10;static void show() System.out.println(
6、"Aaa中定義的show()"); class Bbb extends Aaa int i = 20; static void show() System.out.println("Bbb中定義的show()"); public static void main(String args) Aaa a = new Aaa(); Bbb b = new Bbb(); Aaa c = new Bbb(); a.show(); b.show(); c.show(); (Bbb)c).show(); System.out.println(c.i); /考慮此處 S
7、ystem.out.println(Bbb)c).i); /考慮此處 執(zhí)行Bbb的結(jié)果: (Bbb)c).show()執(zhí)行結(jié)果: System.out.println(c.i)執(zhí)行結(jié)果: System.out.println(Bbb)c).i)執(zhí)行結(jié)果: 分析與結(jié)論:C進(jìn)行的向上轉(zhuǎn)型,將子類對(duì)象引用轉(zhuǎn)換為超類類型。所以c.i引用的是超類中的I 而也可以通過(guò)(Bbb)c向下轉(zhuǎn)型 二、程序分析思考以下是例5.22的部分關(guān)鍵代碼,請(qǐng)分析思考以下問(wèn)題:(1) Student類中設(shè)計(jì)抽象方法cost會(huì)帶來(lái)什么好處?因?yàn)椴煌膶W(xué)生所需要的學(xué)費(fèi)不同,所以用抽象cost方法在不用的學(xué)生中調(diào)用cost 執(zhí)行不同
8、的代碼返回對(duì)應(yīng)的值。(2) Student類的compareCost方法可以用于比較哪些類型的對(duì)象?如果沒(méi)有設(shè)計(jì)抽象方法cost,那么會(huì)發(fā)生什么問(wèn)題? 可以比較上轉(zhuǎn)型對(duì)象和子類對(duì)象。如果沒(méi)有抽象方法cost那么就必須在每一個(gè)子類都編寫(xiě)一個(gè)compareCost 導(dǎo)致太多的重復(fù)代碼。注意:分析重點(diǎn)是軟件設(shè)計(jì)的通用性考慮。abstract class Student /定義學(xué)生對(duì)象的抽象超類private String name;public Student(String name) = name; public abstract double cost();/聲明抽象方法,表
9、示學(xué)習(xí)費(fèi)用public double compareCost(Student otherStudent)/當(dāng)前對(duì)象與參數(shù)對(duì)象的費(fèi)用比較return this.cost() - otherStudent.cost(); /返回大于、等于、小于零的數(shù)字public String getName()return ; public void setName(String name) = name; class StudentCostToolstatic double sumCost(Student students)/計(jì)算students所有學(xué)生的費(fèi)用之和doub
10、le sum = 0;for(int i=0;i<students.length;i+)sum = sum + studentsi.cost();return sum;static double averageCost(Student students)/計(jì)算students學(xué)生的平均費(fèi)用return sumCost(students)/students.length;static double maxCost(Student students)/計(jì)算students所有學(xué)生的費(fèi)用最大值if(students.length = 1) return students0.cost();int
11、 index = 0;for(int i=0;i<students.length;i+)if(pareCost(studentsi) < 0)index = i;return studentsindex.cost();三、接口與抽象類實(shí)驗(yàn)1. 編譯下面的程序, 指出錯(cuò)誤.interface A /語(yǔ)句1 void show(); void show(int i) System.out.println("A show()"); (1) 是否出錯(cuò)? 出錯(cuò)原因? 是,接口A必須是抽象方法即不能有實(shí)現(xiàn)代碼。(2) 如果將上面語(yǔ)句1的in
12、terface改為abstract class , 編譯是否出錯(cuò)? (提示: 注意abstract修飾符) 是 。之后變成了抽象類,那么void show()前面也應(yīng)該加absrtract(3)根據(jù)上面的(1)和(2), 可以看出接口與抽象類的什么區(qū)別? 接口中只能聲明抽象方法,抽象類中既能聲明抽象方法,也能聲明非抽象方法,但抽象方法前面需要加上abstract。接口則不需要。2. 編譯下面的程序, 指出錯(cuò)誤.interface IA void show(); void show(int i);class A implements IA /語(yǔ)句1 public void show(int i)
13、 /語(yǔ)句2 System.out.println("A show()"); (1) 上面的程序編譯是否出錯(cuò)? 出錯(cuò)原因? 出錯(cuò),void show沒(méi)有實(shí)現(xiàn) (2) 如果將語(yǔ)句1中的class 改為abstract class, 編譯是否出錯(cuò)? 為何? 否,因?yàn)槌橄箢惪梢圆痪唧w實(shí)現(xiàn)。(3) 如果將語(yǔ)句2中的public刪除, 編譯是否出錯(cuò)? 為何? 出錯(cuò), 因?yàn)?interface中的方法都是public 所以子類中也應(yīng)該聲明為public 3. 編譯下面的程序, 回答問(wèn)題abstract class A public void show() System.out.print
14、ln("A show()"); class AbstractClassTest public static void main(String args) A a = new A(); (1) 編譯是否出錯(cuò)? 出錯(cuò) (2) 類A的定義編譯是否出錯(cuò)? 說(shuō)明什么?(考慮抽象類中是否可以沒(méi)有抽象方法)不出錯(cuò),因?yàn)槌橄箢愔惺欠窨梢詻](méi)有抽象方法4. 編譯下面的程序, 回答問(wèn)題abstract class A static abstract void show();class B extends A public static void main(String args) show();
15、 (1) 上面的程序編譯是否出錯(cuò)?是(2) 如何改正?abstract class Apublic static abstract void show();5. 編譯下面的程序, 回答問(wèn)題interface IA int i; void show();(1) 上面的程序編譯是否出錯(cuò)? 是 ,(2) 如果出錯(cuò), 錯(cuò)在何處? I應(yīng)該是一個(gè)靜態(tài)常量 需要賦值6. 編譯下面的程序, 回答問(wèn)題.interface IA int i=100; void show(); /代碼1interface IB int j=100; void show(int a); /代碼2class A implements
16、IA,IB public void show()/代碼3 public void show(int a) /代碼4(1) 上面的程序編譯是否出錯(cuò)? 否(2) 代碼1和代碼3的區(qū)別是什么? 同樣, 代碼2與代碼4的區(qū)別是什么? 1 方法的聲明,3是方法的實(shí)現(xiàn)7. 編譯下面的程序, 回答問(wèn)題.abstract class A void show1()abstract class B void show2() class C extends A,B void show3()(1) 上面的程序編譯是否出錯(cuò)? 出錯(cuò)(2) 如果出錯(cuò), 錯(cuò)在何處? 類不能多重繼承8. 編譯下面的程序, 回答問(wèn)題.final
17、 class A void show()class B extends A void show2()(1) 上面的程序編譯是否出錯(cuò)? 是 (2) 如果出錯(cuò), 錯(cuò)在何處? Final定義的不能繼承9. 編譯下面的程序, 回答問(wèn)題.class A final void show()class B extends A void show() System.out.println("aaa"); (1) 上面的程序編譯是否出錯(cuò)? 出錯(cuò)(2) 如果出錯(cuò), 錯(cuò)在何處? Final類不能被覆蓋10. 編譯下面的程序, 回答問(wèn)題.interface IA /沒(méi)有定義任何成員class B
18、/沒(méi)有定義任何成員(1) 上面的程序編譯是否出錯(cuò)? 否(2) 如果沒(méi)有出錯(cuò), 你可以得出什么結(jié)論? 接口和類都可以為空11編譯并運(yùn)行下面程序,分析運(yùn)行結(jié)果interface IStudent void showDetail();class Student implements IStudent String name; int age; Student() Student(String name,int age) = name; this.age = age; public void showDetail() System.out.println(name+"t"+age); class GraduateStudent implements IStudent String name; int age; String major; GraduateStudent() GraduateStudent(Stri
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 蔬菜種植生態(tài)環(huán)境保護(hù)與修復(fù)考核試卷
- 谷物磨制新技術(shù)與發(fā)展趨勢(shì)考核試卷
- 通信設(shè)備專業(yè)安全性能強(qiáng)化考核試卷
- 紙制品行業(yè)生產(chǎn)安全管理與事故處理考核試卷
- 通訊設(shè)備軟件更新與優(yōu)化考核試卷
- 畜產(chǎn)品加工市場(chǎng)動(dòng)態(tài)分析與競(jìng)爭(zhēng)策略的制定考核試卷
- 服務(wù)標(biāo)準(zhǔn)化與工藝品市場(chǎng)服務(wù)考核試卷
- 物業(yè)管理中的社會(huì)責(zé)任與可持續(xù)發(fā)展考核試卷
- 藝術(shù)品拍賣實(shí)戰(zhàn)考核試卷
- 抖音用戶個(gè)人信息保護(hù)與隱私政策執(zhí)行合同
- 2025年湖北省新華書(shū)店(集團(tuán))限公司招聘(93人)高頻重點(diǎn)提升(共500題)附帶答案詳解
- 鈹箔及鈹合金箔行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 2024年中考地理專項(xiàng)復(fù)習(xí):材料分析題(解析版)
- 基于項(xiàng)目式學(xué)習(xí)的思政教學(xué)實(shí)踐探索
- 2020-2021學(xué)年四川省涼山州八年級(jí)(下)期末物理試卷
- 《(近)零碳園區(qū)評(píng)價(jià)技術(shù)規(guī)范》
- 2024-2025學(xué)年中考數(shù)學(xué)專項(xiàng)復(fù)習(xí):函數(shù)之新定義問(wèn)題(含答案)
- 鶴壁市第一屆職業(yè)技能大賽 保健按摩師項(xiàng)目技術(shù)工作文件
- 中建室外景觀園林專項(xiàng)施工方案
- 鍋爐生產(chǎn)單位質(zhì)量安全員、安全總監(jiān)-特種設(shè)備考試題庫(kù)
- 2023年上海鐵路局集團(tuán)有限公司招聘筆試真題
評(píng)論
0/150
提交評(píng)論