Java 继承中出现必需错误和错误
嗨,我在如何正确使用super()关键字方面遇到了麻烦。解释起来有点困难,请尽量理解 所以我有一个名为“Window”的类,它是另一个名为“Room”的类的子类 这是一个带构造函数的Java 继承中出现必需错误和错误,java,inheritance,window,required,Java,Inheritance,Window,Required,嗨,我在如何正确使用super()关键字方面遇到了麻烦。解释起来有点困难,请尽量理解 所以我有一个名为“Window”的类,它是另一个名为“Room”的类的子类 这是一个带构造函数的房间类 public class Room { private Position position; private Color color; public Room(Position pos, Color colour){ this.position = pos; th
房间
类
public class Room {
private Position position;
private Color color;
public Room(Position pos, Color colour){
this.position = pos;
this.color = color;
}
}
所以我想给门一个colorcolor.RED
Window对象是用一个输入位置参数构造的
到目前为止,我得到的是:
public class Window extends Room{
private Color color;
public Window(Position position, Color color) {
super(position, color);
this.colour = Color.RED;
}
然而,在我的其他类中,有一些代码只使用一个位置参数创建一个新的窗口
这是示例
代码
public class example{
private Window window;
private Position position;
public example() {
}
@Before
public void create() {
position = new Position(4,3);
window = new Window(position);
}
因此,它变成了必需的
和发现的
错误,告诉我长度不正确。我明白错误告诉我的是什么
这是我的问题。如何重做
窗口
构造函数,使其满足超级类和其他类的要求,而不改变这些类。在窗口中创建新构造函数并设置默认颜色
public Window(Position position) {
//Set default color
super(position, Color.RED);
this.colour = Color.RED;
}
将另一个构造函数添加到
窗口
类:
public class Window extends Room {
public Window(Position position) {
super(position, null);
}
或者,定义传递的默认颜色,而不是
null
为什么Window
有一个字段color
,而它的超类Room
也有一个字段color
?你怎么知道这两种颜色指的是哪一种?第二,这可能会引起混淆:当B是a的一个子类时,你通常可以说“B是a”。但在你的事业中,窗户是房间的一个子类。除非你不能说“窗户就是房间”。您可能在此处使用了错误的OO构造。请注意,Window
不应从Room
继承。看见