麻烦老师看下,哪里还需要改进

麻烦老师看下,哪里还需要改进

相关代码:
/**
 * @ClassName ShapeTest
 * @description: Shape的测试类
 * @author: 自己名字
 * @create: 2022-03-23 16:44
 **/
public class ShapeTest {
    public static void main(String[] args) {
        //创建类的实例,并分别对圆的半径和矩形的长宽进行赋值
        Shape circle1=new Circle(3.0);
        Shape rectangle1=new Rectangle(2.0,6.0);

        //调用area()方法,输出结果
        System.out.println("圆形的面积为:"+circle1.area());
        System.out.println("长方形的面积为:"+rectangle1.area());

    }
}


/**
 * @ClassName Shape
 * @description: 父类
 * @author: 自己名字
 * @create: 2022-03-23 16:42
 **/
public abstract class Shape {
    public Shape(){

    }
    public abstract double area();
}

/**
 * @ClassName Circle
 * @description: Shape的子类
 * @author: 自己名字
 * @create: 2022-03-23 16:43
 **/
public class Circle extends Shape{
    //属性:圆的半径r
    private double r;

    //创建带参构造方法以及无参构造方法
    public Circle(){

    }
    public Circle(double r){
        this.setR(r);
    }


    //创建针对半径的赋值和取值方法
    public void setR(double r){
        this.r=r;
    }
    public double getR(){
        return r;
    }

    //重写父类中area()方法
    @Override
    public double area() {
        return Math.PI*(getR()*getR());
    }
}

/**
 * @ClassName Rectangle
 * @description: Shape的子类
 * @author: 自己名字
 * @create: 2022-03-23 16:43
 **/
public class Rectangle extends Shape {
    //属性:矩形的长lenghth、宽wide
    private double length;
    private double wide;

    //创建带参构造方法以及无参构造方法
    public Rectangle(){

    }
    public Rectangle(double length,double wide){
        this.setLength(length);
        this.setWide(wide);
    }

    //创建针对长、宽的赋值和取值方法
    public void setLength(double length){
        this.length=length;
    }
    public double getLength(){
        return length;
    }
    public void setWide(double wide){
        this.wide=wide;
    }
    public double getWide(){
        return wide;
    }

    //重写父类的area()方法
    @Override
    public double area() {
        return this.getLength()*this.getWide();
    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕阿园 2022-03-24 10:30:52

同学你好,代码完成的不错,不需要再改进了,很棒呐,继续加油

祝学习愉快~

  • 这里是做的向上转型, 而调的是子类的方法, 是因为父类area方法是抽象方法, 所以这里调的是子类方法, 而不是父类的area方法吗?

    https://img1.sycdn.imooc.com//climg/62e14f0c09e745ba06690225.jpg

    2022-07-27 22:44:55
  • 同学你好,这里使用的是多态的方式进行方法的调用。

    当使用多态时,会在程序运行时,根据子类的实际类型进行方法调用,而不是根据引用的类型进行调用。

    祝学习愉快~

    2022-07-28 10:27:47
  • 明白了 向上转型 可以调用子类重写父类的方法, 不能调子类独有的方法

    https://img1.sycdn.imooc.com//climg/62e2855409fabb2408460164.jpg

    2022-07-28 20:47:19
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师