【PTA】7-12 多态练习-计算面积

7-12 多态练习-计算面积(分数 20)
定义三个类,父类(抽象类)GeometricObject代表几何形状,子类Circle代表圆形,子类Rectangle代表矩形。具体属性和方法如下:
父类 (抽象类)GeometricObject
属性:
private String name;
private String color;
为上述变量提供getter()和setter()方法
构造方法:为name和color初始化
public GeometricObject(String name,String color)
抽象方法:
public void findArea();用于计算几何图形的面积

子类:
Circle
属性:
private double radius;半径
为上述变量提供getter()和setter()方法
构造方法:
设计构造方法为圆形的name,color和radius初始化
方法:
实现findArea()方法用于计算圆形的面积并返回计算结果

子类:
Rectangle
属性:
private double width;宽
private double height;高
为上述变量提供getter()和setter()方法
构造方法:
设计构造方法为圆形的name,color,width和height初始化
方法:
实现findArea()方法用于计算矩形的面积并返回计算结果

测试类Main
方法:
public static void main(String[] args) {
创建矩形对象(“长方形”,“蓝色”,3.2,4.5)
输出矩形的颜色和面积
创建圆形对象(“圆形”,“红色”,3.4)
输出圆形的颜色和面积
}
public static void show(GeomentricObject g){
//形参传入圆形或者矩形的对象,输出其面积
//判断传入的对象是圆形还是矩形
//如果是圆形就输出圆形的颜色和面积;
//如果是矩形就输出矩形的颜色和面积;
}
注意:1.所有类不用修饰词
2.测试类名称为“Main”,否则编译出错

在这里给出一组输入。例如:

无(PTA无输入都可以直接输出,但应该锻炼自己的代码能力)

输出样例:

在这里给出相应的输出。例如:

矩形的颜色是:蓝色,面积是:14.4
圆形的颜色是:红色,圆形的面积是:36.31681107549801

abstract class GeometricObject {   //定义父类(抽象类)
    private String color;
    private String name;
    public GeometricObject() {
    }
    public GeometricObject(String name,String color) {
        this.name=name;
        this.color=color;
    }
    public void setterC(String color) {
        this.color=color;
    }
    public void setterN(String name) {
        this.name=name;
    }
    public String getterC() {
        return color;
    }
    public String getterN() {
        return name;
    }
    abstract public double findArea();   //定义抽象方法
}

class Circle extends GeometricObject {   //定义圆形子类
    private double radius;
    public Circle() {
    }
    public Circle(String name,String color,double radius) {
        super(name,color);
        this.radius=radius;
    }
    public void setterR(double radius) {
        this.radius=radius;
    }
    public double getterR() {
        return radius;
    }
    public double findArea() {   //实现计算圆形面积的抽象方法
        return Math.PI*radius*radius;
    }
}

class Rectangle extends GeometricObject {   //定义矩形子类
    private double width;
    private double height;
    public Rectangle() {
    }
    public Rectangle(String name,String color,double width,double height) {
        super(name,color);
        this.width=width;
        this.height=height;
    }
    public void setterW(double width) {
        this.width=width;
    }
    public void setterH(double height) {
        this.height=height;
    }
    public double getterW() {
        return width;
    }
    public double getterH() {
        return height;
    }
    public double findArea() {   //实现计算矩形面积的抽象方法
        return width*height;
    }
}

public class Main {
    public static void main(String [] args) {
        GeometricObject R=new Rectangle("长方形","蓝色",3.2,4.5);   //根据题目提示:向上继承
        show(R);   //调用公有静态show方法
        GeometricObject C=new Circle("圆形","红色",3.4);
        show(C);
    }
    public static void show(GeometricObject g) {
        if(g.getterN().equals("长方形"))   //若符合条件则根据格式输出
            System.out.println("矩形的颜色是:"+g.getterC()+",面积是:"+g.findArea());
        else
            System.out.println("圆形的颜色是:"+g.getterC()+",圆形的面积是:"+g.findArea());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值