###一.實驗目的java
####(1)掌握類的繼承函數
一、子類繼承父類中非private的成員變量和成員方法,同時,注意構造方法不能被子類繼承。 二、定義類時若缺省extends關鍵字,則所定義的類爲java.lang.Object類的直接子類。 在Java語言中,一切類都是Object類的直接或間接子類。 三、Java僅支持單重繼承,即一個類至多隻有一個直接父類。在Java中經過接口來實現多重繼承。 四、父類中定義的private成員變量和方法不能被子類繼承,所以在子類中不能直接使用。咱們能夠在父類中定義公共的訪問方法和修改方法,子類能夠經過這些方法來實現訪問和修改。this
####(2)變量的繼承和覆蓋,方法的繼承,重載和覆蓋的實現;code
① 父類與子類之間的多態性,對父類的函數進行從新定義。若是在子類中定義某方法與其父類有相同的名稱和參數,咱們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不須要從新編寫相同的方法。但有時子類並不想原封不動地繼承父類的方法,而是想做必定的修改,這就須要採用方法的重寫。方法重寫又稱方法覆蓋。 ② 若子類中的方法與父類中的某一方法具備相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可以使用super關鍵字,該關鍵字引用了當前類的父類。 ③子類函數的訪問修飾權限不能少於父類的 重寫方法的規則: 1.參數列表必須徹底與被重寫的方法的相同,不然不能稱其爲重寫而是重載. 2.返回的類型必須一直與被重寫的方法的返回類型相同,不然不能稱其爲重寫而是重載. 3.訪問修飾符的限制必定要大於被重寫方法的訪問修飾符(public>protected>default>private) 4.重寫方法必定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常.例如, 父類的一個方法申明瞭一個檢查異常IOException,在重寫這個方法是就不能拋出Exception,只能拋出IOException的子類異常,能夠拋出非檢查異常.對象
而重載的規則: 1.必須具備不一樣的參數列表; 2.能夠有不一樣的返回類型,只要參數列表不一樣就能夠了; 3.能夠有不一樣的訪問修飾符; 4.能夠拋出不一樣的異常;blog
###二.實驗的內容繼承
(1)根據下面的要求實現圓類Circle。接口
1.圓類Circle的成員變量:radius表示圓的半徑。 2.圓類Circle的方法成員: Circle():構造方法,將半徑置0 Circle(double r):構造方法,建立Circle對象時將半徑初始化爲r double getRadius():得到圓的半徑值 double getPerimeter():得到圓的周長 void disp():將圓的半徑和圓的周長,圓的面積輸出到屏幕get
####實驗代碼:io
package o; public class a { private Double radius; public a() { } public a(double r){ this.radius = r; } public double getRadius(){ return radius; } public double getPerimeter(){ return 2*radius*Math.PI; } public double gerArea(){ return Math.PI*Math.pow(radius,2); } public void disp(){ System.out.println("圓的半徑爲: " + this.getRadius()); System.out.println("圓的周長爲: " + this.getPerimeter()); System.out.println("圓的面積爲: " + this.gerArea()); } public static void main(String[] args) { a c =new a(2.0); c.disp(); } }
####實驗截圖
(2)繼承第一題中的圓Circle類,派生圓柱體類Cylinder。要求以下:
1.圓柱體類Cylinder的成員變量:height表示圓柱體的高。 2.圓柱體類Cylinder的成員方法: Cylinder(double r,double h)構造方法,建立Cylinder對象時將圓半徑初始化爲r,圓柱體高初始化爲h。 double getHeight():得到圓柱體的高 double getVol():得到圓柱體的體積 void dispVol():將圓柱體的體積輸出到屏幕 3.按照第二題的Cylinder類,接上鍵盤的輸入值做爲圓的半徑和圓柱體的高,計算圓柱體的體積
####實驗代碼:
package o; public class a { double height; double radius; public a(double r,double h){ radius = r; height = h; } public double getRadius() { return radius;} public double getHeight() { return height;} public double getVol() { return Math.PI*Math.pow(radius,2)*height;} public static void main(String[] args) { a b = new a(0,0); b.radius = 5.0; b.height = 5.0; System.out.printf("r" +b.getRadius()); System.out.printf("h" +b.getHeight()); System.out.printf("v" +b.getVol()); } }
####實驗截圖
###總結 題目對我來講有點難,問了室友才弄出來的。。