對於每個幾何圖形而言,都有一些共同的屬性,如名字、面積等,而其計算面積的方法卻各不相同。為了簡化開發,請編寫程序,定義一個超類來實現輸入名字的方法,並使用抽象方法來計算面積。
思路分析:
所謂超類就是抽象父類,該抽象類中有兩個方法,分別用來獲取圖形的名稱和圖形的面積。要獲得圖形的名稱,通過類的getClass().getSimpleName()方法可以實現;要獲得圖形的面積,因為計算面積的方法各不相同,所以該方法是個抽象方法。
定義一個子類表示圓形,圓形的半徑通過構造方法獲得,圓形的面積通過重寫超類中的抽象方法獲得,其中圓周率可以用Math.PI表示。
其他類同步驟2,半徑、長、寬等參數通過構造方法獲得,這樣才省事嘛。
代碼如下:
代碼如下:
public abstract class Shape {
public String getName() {//獲得圖形的名稱
return this.getClass().getSimpleName();
}
public abstract double getArea();//獲得圖形的面積
}
public class Circle extends Shape {
private double radius;
public Circle(double radius) {//獲得圓形的半徑
this.radius = radius;
}
@Override
public double getArea() {//計算圓形的面積
return Math.PI * Math.pow(radius, 2);
}
}
public class Rectangle extends Shape {
private double length;
private double width;
public Rectangle(double length, double width) {//獲得矩形的長和寬
this.length = length;
this.width = width;
}
@Override
public double getArea() {//計算矩形的面積
return length * width;
}
}
public class Test {
public static void main(String[] args) {
Circle circle = new Circle(1);//創建圓形對象並將半徑設置成1
System.out.println("圖形的名稱是:" + circle.getName());
System.out.println("圖形的面積是:" + circle.getArea());
Rectangle rectangle = new Rectangle(1, 1);//創建矩形對象並將長和寬設置成1
System.out.println("圖形的名稱是:" + rectangle.getName());
System.out.println("圖形的面積是:" + rectangle.getArea());
}
}
效果如圖: