[英]Java: How does a call to the super class constructor inside of a child class constructor work?
[英]Java how to set child class instance variable with super class constructor
我有一个孩子 class 有两个实例变量color
和position
。 构造函数接受这两个。 我首先调用包含setColor(color)
-> this.color = color
的super(color)
构造函数。 根据调试工具,这是为超级 class 而不是调用该方法的子 class 设置this.color
。 这不是使用超级 class 构造函数来设置实例变量的正确方法吗?
Rook.java:
public Rook(String color, Position pos) {
super(color);
// at this point this.color == null (for Rook)
initPosition(pos);
}
通用件.java:
public GenericPiece(String color) {
setColor(color);
// at this point this.color == "white" (for GenericPiece)
}
public void setColor(String color) throws InvalidPieceColorError {
if (Color.checkValid(color)) {
this.color = color;
} else {
throw new InvalidPieceColorError(color);
}
}
颜色字段应该只是父 class 的一部分,并且不能在子字段中重复。 Inheritance 是关于shared state
因此颜色将被Rock
类型继承,并将具有公共或受保护的访问权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.