繁体   English   中英

Java 如何使用超级 class 构造函数设置子 class 实例变量

[英]Java how to set child class instance variable with super class constructor

我有一个孩子 class 有两个实例变量colorposition 构造函数接受这两个。 我首先调用包含setColor(color) -> this.color = colorsuper(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);
    }
}

!这是调试信息的图片1

颜色字段应该只是父 class 的一部分,并且不能在子字段中重复。 Inheritance 是关于shared state因此颜色将被Rock类型继承,并将具有公共或受保护的访问权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM