一個抽象類的經典案例


1.根據周長計算不同形狀圖形的面積

以正方形和圓形為例

(1)分別定義Square類和Circle類,並且定義Square類和Circle類中的c屬性和area方法。

public class Circle Shape{
private double c;
public Circle(double c){
this.c=c;
}
/**
* 計算圓形的面積
*/
public double area(){
return 0.0796*c*c;
}

}

public class Square Shape{
private double c;

public Square(double c){
this.c=c;
}
/**
* 計算正方形的面積
* @param c
*/
public double area(){
return 0.0625*c*c;
}

}

(2)定義父類Shape並抽取子類Square和Circle中共有屬性c和方法area抽取到父類Shape中,並重構Square類和Circle類

public abstract class Shape {
protected double c;
public abstract double area();

}

(3)修改Square類和Circle類。

public class Circle extends Shape{
private double c;
public Circle(double c){
this.c=c;
}
/**
* 計算圓形的面積
*/
public double area(){
return 0.0796*c*c;
}

}

public class Square extends Shape{
private double c;

public Square(double c){
this.c=c;
}
/**
* 計算正方形的面積
* @param c
*/
public double area(){
return 0.0625*c*c;
}

}

(4)定義計算最大面積的方法

public static void maxArea(Shape[] shapes){
double max=shapes[0].area();
int maxIndex=0;
for(int i=1;i<shapes.length;i++){
double area=shapes[i].area();
if(area>max){
max=area;
maxIndex=i;
}
}
System.out.println("數組中索引為"+maxIndex+"的圖形的面積最大,面積為:"+max);
}

(5)測試

public static void main(String[] args){
Shape[] shapes=new Shape[2];
shapes[0]=new Circle(4);
shapes[1]=new Square(4);
maxArea(shapes);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM