java 创建两个Shape子类

7gcisfzg  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(126)

您正在使用一个图形应用程序,其中包含多个不同的形状。给定的代码声明了一个具有抽象区域的Shape基类()方法和一个width属性。您需要创建两个Shape子类Square和Circle,它们使用各自的构造函数初始化width属性。并定义它们的区域()方法。区域Square类的()应输出正方形的面积(宽度的平方),而对于Circle,它应该输出给定圆的面积(PIwidthwidth)。main中的代码使用给定的用户输入创建两个对象,并调用area()方法。
我已经开始写一些代码,但它不工作,我想我犯了不止一个错误。

import java.util.Scanner;

abstract class Shape {
    int width;
    abstract void area();
}
//your code goes here

class Square extends Shape {

    int width = x;
    
    Square() {

    int area(){
    area = x*x;
    }
}
}

class Circle extends Shape {
    
    int width = (double) y;

    Circle(){
    
    double area() {
    area = Math.PI*y*y;
    }
}
}

public class Program {
    public static void main(String[ ] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int y = sc.nextInt();
        
        Square a = new Square(x);
        Circle b = new Circle(y);
        a.area();
        b.area();
    }
}
sg3maiej

sg3maiej1#

您在构造函数中编写了一个函数。这是无效的,您应该看到一个语法错误...
我假设你也想要main方法中给出的构造函数的参数,并且你需要从你的area函数中得到return,因为它不是void,至少,可能不应该是;你需要在抽象类中修改abstract void area();

class Square extends Shape {
    
    public Square(int x) { 
        super.width = x;  // sets field of parent class 
    }

    @Overrides
    public double area(){
        return 1.0 * super.width * super.width;
    }
}

那么您需要在main方法中使用System.out.println (a.area())
执行圆圈我将留给你。
更多信息-

相关问题