【发布时间】:2021-06-06 23:31:25
【问题描述】:
我是一名在 Java 项目中工作的学生,我需要通过扩展默认的 Rectangle 类来练习使用继承;子类MyRectangle 需要具有接受描述矩形边框和填充颜色及其尺寸的参数的构造函数。我还需要包含用于边框/颜色属性的 getter/setter 方法、将矩形旋转 180 度的方法,以及计算和返回矩形面积和周长的方法。所有必需的方法/字段在文档file:///C:/Users/sweis/Downloads/MyRectangle.html 中有更详细的描述
在这里,输出最终应该是这样的:https://i.stack.imgur.com/KP7LB.png
我已经编写了一些代码,但是我收到了很多错误消息,这些错误消息引用了我实际定义MyRectangle 类并设置构造函数的程序部分,包括"Non-static variable cannot be referenced from a static context" 和"error: cannot find symbol"。我在 Java 方面很新,所以我真的不确定,但我担心我从根本上误解了关于继承的一些东西,我正在努力自己解决这些错误。如果有人可以查看我到目前为止所写的内容并帮助我理解我做错了什么,我将非常感激,这样我就可以更好地理解这个概念。以下是导致问题的部分:
import java.awt.Rectangle;
class Main {
public static void main(String[] args) {
MyRectangle mr1 = new MyRectangle(0, 0, 4, 2, "blue", "red", true);
MyRectangle mr2 = new MyRectangle(5, 5, 10, 3, "green");
MyRectangle mr3 = new MyRectangle();
System.out.println(mr1 + " " + "area = " + mr1.area() + " perimeter = " + mr1.perimeter());
System.out.println(mr2 + " " + "area = " + mr2.area() + " perimeter = " + mr2.perimeter());
System.out.println(mr3 + " " + "area = " + mr3.area() + " perimeter = " + mr3.perimeter());
System.out.println(mr4 + " " + "area = " + mr4.area() + " perimeter = " + mr4.perimeter());
}
public static class MyRectangle extends Rectangle {
public static int width, height;
public String color, borderColor;
public boolean border;
public MyRectangle() {
super();
}
public MyRectangle(int x, int y, int w, int h, String c) {
width = w;
height = h;
color = c;
}
public MyRectangle(int x, int y, int w, int h, String c, String bc, boolean b) {
borderColor = bc;
border = b;
}
public int area() {
return (width * height);
}
public int perimeter() {
return ((width * 2) + (height * 2));
}
public void setBorder(boolean newBorder) {
border = newBorder;
}
}
}
}
如果您有任何问题或需要我澄清任何事情,我一定会这样做。谢谢!
【问题讨论】:
-
MyRectangle 对象
mr4未创建但在打印语句中使用,这将导致cannot find symbol -
width和height也是MyRectangleObjects 而不是 Class 的属性,因此您应该删除static修饰符。另外,为什么您的构造函数中有int x和int y?你没有在任何地方使用这些。否则,它看起来不像错误使用(非)static导致的错误,至少在您提供的代码 sn-p 中。 -
欢迎来到 StackOverflow!您的问题看起来像您提出了一些努力,在这里非常感谢。我仍然想指出以下几点:当您遇到错误时,包含整个错误消息是有意义的,包括行号和通常给出的代码行,以便其他人可以找到他们的位置更快地查看。 Note that it is discouraged to upload images of text here。相反,这应该以正确的格式简单地粘贴到问题中。
标签: java inheritance polymorphism