一个抽象类的经典案例

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);
}

 

转载于:https://www.cnblogs.com/karmapeng/p/6373266.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值