我的朋友给了我这项任务,而我在最后一个方面很挣扎,它要求我:
“实现一个称为Square的类,该类代表一个正方形。
正方形必须从Rectangle派生。确保您覆盖
toString()。”
我什至不认为我什至快要得到它,但是任何帮助都会很棒
矩形
public class Rectangle {
public double width;
public double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
public double getArea() {
return width * height;
}
public double getPerimeter() {
return 2*width+2*height;
}
@Override
public String toString() {
return "Rectangle[width "+width+",height "+height+"]Area:"+getArea()+",Perimeter:"+getPerimeter();
}
public static void main(String[] args) {
double width = (10);
double height = (10);
Rectangle rectangle = new Rectangle(width, height);
System.out.println(rectangle);
}
}
Sqaure.java
public class Sqaure extends Rectangle {
private final double width, height, area, perimeter;
public Sqaure(double width, double height) {
this.width = width;
this.height= height;
}
public static void main(String[] args) {
double width = (10);
double height = (10);
Sqaure sqaure = new Sqaure(width, height);
System.out.println(square);
}
}
最佳答案
除了构造函数和toString()
以外,无需覆盖其他内容。由于正方形只是边长相等的特殊矩形,您可以将它们初始化为相同的值,所有其他方法将按预期工作:
public class Square extends Rectangle {
public Square(double width) {
super(width, width);
}
@Override
public String toString() {
return "Square[width:" + width + "]Area:" + getArea() +
",Perimeter:" + getPerimeter();
}
请注意,在现实世界中,在这种情况下,您可能不会使用继承,因为这会引入一些歧义-您仍然可以使用矩形构造函数创建正方形,并且人们可能会误导使用instanceof检查来确定给定的矩形是一个正方形。相反,可能会添加一个参数构造函数并检查toString中的宽度/高度等效项。