類繼承與接口(二)實驗報告_第1頁
類繼承與接口(二)實驗報告_第2頁
類繼承與接口(二)實驗報告_第3頁
類繼承與接口(二)實驗報告_第4頁
類繼承與接口(二)實驗報告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗十 類繼承與接口(二) 課程名稱: 面向?qū)ο蟪绦蛟O(shè)計實驗 實驗項目名稱: 實驗十 類繼承與接口 (二) 學生姓名: 專業(yè): 學號: 實驗地點: 實驗日期: 年 月 【實驗目的】1掌握Java類的繼承特點,包括子類聲明、對象創(chuàng)建、成員變量的繼承與隱藏、成員方法的繼承與重寫【實驗內(nèi)容】10-1程序閱讀分析題。要求(1)有一個abstract類,類名為Employee。Employee的子類有YearWorker,MonthWorker和WeekWorker。YearWorker對象按年領(lǐng)取薪水,MonthWorker按月領(lǐng)取薪水,WeekWorker按周領(lǐng)取薪水。Employee類有一個abs

2、tract方法,子類必須重寫父類的earings()方法,給出各自領(lǐng)取報酬的具體方式。(2)有一個Company類,該類用employee數(shù)組作為成員,employee數(shù)組的單元可以是YearWorker對象的上轉(zhuǎn)型對象,MonthWorker對象 的上轉(zhuǎn)型對象或者WeekWorker對象的上轉(zhuǎn)型對象。源程序:(請將源程序中補充的空缺代碼處以下劃線加粗顯示):abstract class Employeepublic abstract double earnings();class YearWorker extends Employee/重寫earnings()方法代碼1:class Mont

3、hWorker extends Employee/重寫earnings()方法代碼2:class WeekWorker extends Employee /重寫earnings()方法代碼3:class CompanyEmployee employee;double salaries=0;Company(Employee employee)this.employee=employee;public double salariesPay()salaries=0;/計算salaries代碼4:return salaries;public class HardWorkpublic static vo

4、id main(String args)Employee employee=new Employee20;for(int i=0;iemployee.length;i+)if(i%3=0)employeei=new WeekWorker();else if(i%3=1)employeei=new MonthWorker();else if(i%3=2)employeei=new YearWorker();Company company=new Company(employee);System.out.println(公司年工資總額:+company.salariesPay();代碼:abstr

5、act class Employeepublic abstract double earnings();class YearWorker extends Employee/重寫earnings()方法 public double earnings() return 80000.0; class MonthWorker extends Employee public double earnings() return 60000.0; class WeekWorker extends Employee public double earnings() return 40000.0; class C

6、ompanyEmployee employee;double salaries=0;Company(Employee employee)this.employee=employee;public double salariesPay()salaries=0;for(int i = 0;i employee.length; i+)salaries = salaries + employeei.earnings(); return salaries;public class HardWorkpublic static void main(String args)Employee employee=

7、new Employee20;for(int i=0;iemployee.length;i+)if(i%3=0)employeei=new WeekWorker();else if(i%3=1)employeei=new MonthWorker();else if(i%3=2)employeei=new YearWorker();Company company=new Company(employee);System.out.println(公司年工資總額:+company.salariesPay();10-2.檢查下面代碼是否有錯,如果有錯,寫明錯誤原因,并修正錯誤。1. class Aaa

8、 int i; Aaa()i=-1; Aaa(int a) i = a; Aaa(double d)Aaa(int)d);是否出錯:是。出錯原因(如果出錯):構(gòu)造器里不能調(diào)用構(gòu)造器。改為Aaa(double d)i = (int) d;2. class Aaa int i; Aaa()i=-1; Aaa(int a) i = a; Aaa(double a)int b=(int)a;this(b); 是否出錯:錯出錯原因(如果出錯):this(參數(shù))只能為第一句。改為Aaa(double a) this(int)a);3. class Aaa int i;Aaa(int a) i = a;cl

9、ass Bbb extends Aaa Bbb() 是否出錯: 錯, 出錯原因(如果出錯):Bbb() 中沒有調(diào)用Aaa中的構(gòu)造器,改為Bbb()super(10);4. class Aaa private int i; protected int j;class Bbb extends Aaa Bbb() i = 10; j = 99; 是否出錯:錯出錯原因(如果出錯):Bbb的直接超類Aaa中的實例變量i權(quán)限為private,在Bbb中不可繼承,將int i;的權(quán)限改為至少為protected。5. 編譯下面程序,程序是否出錯class A int i =100;class B exten

10、ds A int i =10000;public static void main(String args)System.out.println(this.i);System.out.println(super.i);a) 是否出錯:是b) 出錯原因(如果出錯):(2)如果將上述類B的int i =10000改為static int i =10000;類A的int i =100改為static int i =100;程序是否出錯?出錯原因(如果出錯):出錯。不能在靜態(tài)上下文中引用this和super。(3)如果將類B的main方法改為public static void main(String

11、 args) B b =new B();System.out.println(b.i); System.out.println(A)b.i); 程序是否出錯? 出錯原因(如果出錯):出錯。(A)b.i錯誤,應該為A.i,并將類A的int i =100改為static int i =100;如果沒出錯, 給出結(jié)果:上面的System.out.println(b.i)的含義: System.out.println(A)b.i) 的含義: 6. class Aaa int i; public void Aaa(int a) i=a; public static void main(String ar

12、gs) Aaa a = new Aaa(10); 是否出錯:是出錯原因(如果出錯):public void Aaa(int a) i=a;應為構(gòu)造器,不是方法,改為public Aaa(int a) i=a;7.class Aaa public static void main(String args)int a=new int5; for( int i=0;ia.length;i+) for(int j=0;iai.length;j+) aij= (int)(100*Math.random(); System.out.println(aij); 是否出錯:是出錯原因(如果出錯):int a=

13、new int5;中沒有列數(shù)量,改為int a=new int55;而且for(int j=0;iai.length;j+)中iai.length;應為j ai.length8.class A int abc(int i)return 1; /方法1 int abc(int j)return 2; /方法2 int abc(int i,int j)return 3; /方法3 void abc(int i) /方法4是否有錯: 是。上面類A中定義的四個方法是否都是方法的重載,有沒有重復定義的方法,如果有,那么哪幾個方法是重復定義的?不是,有重復定義的方法,方法1,2,4為方法重復定義。9. class A void show() System.out.println(A類的show(); class B extends A int show() System.out.println(B類的show(); public static void main(String args) B b = ne

溫馨提示

  • 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

提交評論