版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Java開發(fā)技術(shù)實驗報告實驗序號:實驗13 實驗項目名稱:繼承學(xué)號姓名專業(yè)、班實驗地點實1-316指導(dǎo)教師實驗時間2012-12 -5一、 實驗?zāi)康募耙髄 理解繼承的基本概念l 理解繼承與可見性l 掌握繼承的設(shè)計二、實驗設(shè)備(環(huán)境)及要求PC機,windows xp,軟件環(huán)境(jdk1.6,tomcat web服務(wù)器,Eclipse)l 硬件要求:CPU PII 以上,64M 內(nèi)存,100M 硬盤空間。l 軟件要求:WindowsXP,IE 5 以上。l 開發(fā)環(huán)境:JDK_10三、實驗內(nèi)容與步驟修改類繼承中的錯誤文件Dog.java聲明了一個Dog類,文件Labrador.java和York
2、shire.java是兩個繼承自Dog的類,文件DogTest.java是一個簡單的驅(qū)動程序。將文件保存至本地磁盤并仔細(xì)閱讀。按照以下步驟對上述程序進行修改:1. 在DogTest.java文件中添加語句,要求在創(chuàng)建和打印Dog對象之后,還要創(chuàng)建和打印Yorkshire和Labrador對象。注意Labrador構(gòu)造器有兩個參數(shù):name和color,都是字符串類型。不要修改DogTest之外的任何文件,重新編譯DogTest.java,觀察碰到的錯誤。然后修改相應(yīng)文件來修正該錯誤。2. 在DogTest.java中添加代碼,打印Labrador和Yorkshire兩個類的平均種群重量。提示:
3、使用avgBreedWeight()方法。在編譯中如果遇到錯誤,請解決該錯誤,并給出正確結(jié)果。3. 添加一個抽象方法int avgBreedWeight()至Dog.java。注意這就意味著需要使用關(guān)鍵字abstract來描述avgBreedWeight()方法,并且該方法沒有方法體。重新編譯所有程序,記錄編譯中出現(xiàn)的錯誤,以及解決的方法。DogTest.java源代碼如下:public class DogTest public static void main(String args) Yorkshire yorkshire = new Yorkshire("xiaohei&quo
4、t;);Labrador labrador = new Labrador("xiaobai","white");System.out.println(yorkshire.getName() + " says " + yorkshire.speak();System.out.println(labrador.getName() +" says " + labrador.speak();System.out.println(yorkshire.getName() +" BreedWeight "+y
5、orkshire.avgBreedWeight()+ " says " + yorkshire.speak();System.out.println(labrador.getName() +" BreedWeight "+labrador.avgBreedWeight()+" says " + labrador.speak();Yorkshire.java源代碼如下:public class Yorkshire extends Dog private int breedWeight = 50;public Yorkshire(Stri
6、ng name) super(name);public String speak() return "woof"public int avgBreedWeight() return breedWeight;Labrador.java源代碼如下:public class Labrador extends Dog private String color; / black, yellow, or chocolate?private int breedWeight = 75;public Labrador(String name, String color) super(name
7、);this.color = color;public String speak() return "WOOF"public int avgBreedWeight() return breedWeight;Dog.java源代碼如下:public abstract class Dog protected String name;public Dog(String name) = name;public String getName() return name;public String speak() return "Woof"pub
8、lic abstract int avgBreedWeight();設(shè)計類繼承1 編寫一個抽象類(Shape),長方形、三角形和圓形均為其子類,并各有各的屬性。其父類中有計算周長和面積的方法。在測試類中,分別建立如干個對象,計算并輸出各對象的周長和面積。Shape.java源代碼如下:public class Shape private double area; private double circumference; /圖形類的構(gòu)造函數(shù) public Shape() area=0; circumference=0; /返回圖形的面積 public double getarea() retu
9、rn area; /返回圖形的周長 public double getcircumference() return circumference;Rectangle.java源代碼如下:public class Rectangle extends Shape private double length;private double width; private double area; private double circumference; /長方形類的構(gòu)造函數(shù)1,對長和寬賦值 public Rectangle( double l, double w) length=l; width=w;
10、area=l*w; circumference=2*(l+w); /長方形類的構(gòu)造函數(shù)2,對長和寬賦值public Rectangle( int l, int w) length=(double)l; width=(double)w; area=length*width; circumference=2*(length+width); /長方形類的構(gòu)造函數(shù)3,對長和寬賦值 public Rectangle(String l,String w) length=Double.parseDouble(l); width=Double.parseDouble(w); area=length*width
11、; circumference=2*(length+width); /返回長方形的長 public double getlength() return length; /返回長方形的寬 public double getwidth() return width; /返回長方形的面積 public double getarea() return area; /返回長方形的周長 public double getcircumference() return circumference; /重新定義 equals方法 public boolean equals(Object otherObject)
12、 if(this = otherObject) return true; if(otherObject=null) return false; if(getClass()!=otherObject.getClass() return false; Rectangle other=(Rectangle)otherObject; return length=other.length&&width=other.width &&area=other.area&&circumference=other.circumference; /重新定義hashCod
13、e方法public int hashCode() return (new Double(this.width).hashCode()+new Double(this.length).hashCode(); /重新定義toString方法 public String toString() return "長:"+length+" 寬:"+width+" 面積:"+area+" 周長"+circumference; Triangle.java源代碼如下:public class Triangle extends Sha
14、peprivate double circumference;private double area; private double edge1; private double edge2; private double edge3; /三角形類的構(gòu)造函數(shù),對三角形各邊賦值 public Triangle(double E1,double E2,double E3) double p,q; edge1=E1; edge2=E2; edge3=E3; circumference=edge1+edge2+edge3; p=0.5*(edge1+edge2+edge3); q=p*(p-edge1)
15、*(p-edge2)*(p-edge3); area=Math.sqrt(q); /返回邊1的長? public double getedge1() return edge1; /返回邊2的長? public double getedge2() return edge2; /返回邊3的長? public double getedge3() return edge3; /返回三角形的面積public double getarea() return area; /返回三角形的周長public double getcircumference() return circumference; /重新定義
16、 equals方法 public boolean equals(Object otherObject) if(this = otherObject) return true; if(getClass()!=otherObject.getClass() return false; if(otherObject=null) return false; Triangle other=(Triangle)otherObject; return edge1=other.edge1 &&edge2=other.edge2 &&edge3=other.edge3 &&
17、amp;area=other.area &&circumference=other.circumference; /重新定義hashCode方法 public int hashCode() return (new Double(this.edge1).hashCode()+new Double(this.edge2).hashCode()+new Double(this.edge3).hashCode(); /重新定義 toString方法public String toString() return "邊1:"+edge1+" 邊2:"
18、+edge2+" 邊3:"+edge3+" 面積:"+area+" 周長"+circumference;Circle.java源代碼如下:public class Circle extends Shapedouble radius; double pi=3.14; private double area; private double circumference; /圓形類的構(gòu)造函數(shù)public Circle(double r) radius=r; area=pi*r*r; circumference=2*pi*r; /返回圓的半徑
19、public double getradius() return radius; /返回圓的面積 public double getarea() return area; /返回圓的周長 public double getcircumference() return circumference; public boolean equals(Object otherObject) if(this = otherObject) return true; if(getClass()!=otherObject.getClass() return false; if(otherObject=null)
20、return false; Circle other=(Circle)otherObject; return radius=other.radius &&pi=other.pi &&area=other.area &&circumference=other.circumference; public int hashCode() return (new Double(this.radius).hashCode(); public String toString() return "半徑:"+radius+" 面積:&
21、quot;+area+" 周長"+circumference; Test.java源代碼如下:/* * Test 類的數(shù)組實現(xiàn)*/public class Test public static void main(String args) double sumArea; double sumCircumference; Shape s=new Shape3;s0=new Rectangle(3,4);/定義一個長方形r1,長為3,寬為4 s1=new Circle(2); s2=new Triangle(2,6,5); for(Shape element :s) Syste
22、m.out.println(element);sumArea=s0.getarea()+s1.getarea()+s2.getarea(); sumCircumference=s0.getcircumference()+s1.getcircumference()+s2.getcircumference(); System.out.println("總面積:"+sumArea+", 總周長:"+sumCircumference); 2. (1)設(shè)計一個表示二維平面上點的類Point,包含有表示坐標(biāo)位置的protected類型的成員變量x和y,獲取和設(shè)置x
23、和y值的public方法。Point.java源代碼如下:public class Point float x,y; public Point(float a,float b) x=a; y=b; public void setPoint(float x,float y) this.x=x; this.y=y; public float getX() return x; public float getY() return y; public static void main(String args) Point p1=new Point(12,20); System.out.println(
24、"x的坐標(biāo)為:"+p1.getX(); System.out.println("y的坐標(biāo)為:"+p1.getY(); (2)設(shè)計一個表示二維平面上圓的類Circle,它繼承自類Point,還包含有表示圓半徑的protected類型的成員變量r、獲取和設(shè)置r值的public方法、計算圓面積的public方法。NCircle.java源代碼如下:public class NCircle extends Point protected float radius; / final float PI=3.14; public NCircle(float a,flo
25、at b,float r) super(a,b); radius=r; public void setCircle(float r) radius=r; float getRadius() return radius; double area() return 3.14*radius*radius; public static void main(String args) NCircle c1=new NCircle(3, 4, 5); System.out.println("半徑為:"+c1.getRadius()+"面積為:"+c1.area();
26、(3)設(shè)計一個表示圓柱體的類Cylinder,它繼承自類Circle,還包含有表示圓柱體高的protected類型的成員變量h、獲取和設(shè)置h值的public方法、計算圓柱體體積的public方法。 (4)建立若干個Cylinder對象,輸出其軸心位置坐標(biāo)、半徑、高及其體積的值。Cylinder.java源代碼如下:public class Cylinder extends NCircle float heigh; public Cylinder(float a,float b,float r,float h) super(a,b,r); heigh=h; void setHeigh(float h) heigh=h; float getHeigh() return heigh; double volume() return super.area()*
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 植物系統(tǒng)發(fā)生海報
- 二零二五年度智能化設(shè)備代理注銷與分公司終止合作協(xié)議2篇
- 二零二五年度商業(yè)保理擔(dān)保合同模板3篇
- 二零二五年度教育培訓(xùn)加盟店經(jīng)營管理合同書3篇
- 醫(yī)療領(lǐng)域中的綠色環(huán)保舉措探討
- 2024版建筑設(shè)計合同(創(chuàng)新、新鮮度)3篇
- 學(xué)院專業(yè)課程評價體系的建設(shè)與優(yōu)化
- 二零二五年度影視基地按揭借款協(xié)議3篇
- 2024版版權(quán)代理合同(含國際發(fā)行和推廣服務(wù))3篇
- 小學(xué)科學(xué)課程中的環(huán)保教育
- 初級審計師考試:2022初級審計理論與實務(wù)真題及答案
- 餐飲部員工排班表
- 幼兒園食堂管理規(guī)范(適用于政府和社會力量舉辦的幼兒園食堂)
- 公司金融ppt課件(完整版)
- 徐州醫(yī)科大學(xué)附屬醫(yī)院
- 自動化立體庫貨架驗收報告
- 消防系統(tǒng)工程質(zhì)量控制資料檢查記錄
- 中藥封包療法操作規(guī)范
- 浙江產(chǎn)業(yè)帶分布情況
- 道岔主要幾何尺寸表
- 柳宗元毛筆楷書字帖
評論
0/150
提交評論