java - 为继承字段添加特定值

标签 java inheritance subclass private superclass

我在继承方面遇到了一些麻烦(这里是学生)。我需要能够为我创建的每个子类使用 1 个继承的私有(private)字段。显然,子类无法访问继承的字段,但是当创建新对象时,继承的私有(private)字段是该对象的一部分。出于我的目的,每个子类都需要为继承的字段拥有自己的特定值。我的第一次尝试看起来像这样:

Public class A {

    private int x = 0;

    public A(int n) {

        x = n;
    }

    public int useX() {

        return x;
    }
}

Public class B Extends A {
    int n = 1;

    public B() {
        super(n);
    }

    useX(); // Return 1?
}

Public class C Extends A {
    int n = 2;

    public B() {
        super(n);
    }

    useX(); // Return 2?
}

但是我的教授告诉我,我也可以在 super 类中使用 setter 方法来创建新字段,从那里我很困惑。谁能帮我指出正确的方向?

最佳答案

普通的 Java Bean 提供public访问器更改器(mutator)(又名getterssetters) 对于它的字段。但是,您可以提供一个 protected setter。类似这样的东西,

public class A {
    private int x = 0;

    public int getX() { // <-- the usual name.
        return x;
    }

    protected void setX(int x) {
        this.x = x;
    }
}

然后你的子类可以调用该 setter

public class B extends A {
    public B() {
        super();
        setX(1);
    }
}

然后 B.getX() (或者 B.useX() 如果您确实愿意)将返回 1.

关于java - 为继承字段添加特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36292458/

相关文章:

java - Java中的父类(super class)和子类

java - 使用 Mockito 验证递归方法调用的最佳实践

java - 创建一个 Ant 目标来运行 jar 中的 java 类

java - Java 中的变量继承(初学者)

java - 开始Java接口(interface)程序收集字符串和打印

ruby - 为什么 inspect for the subclasses of built-in classes 中没有列出实例变量?

java - 在Java中获取HTTP响应代码

java - 为什么在 Java 中使用 Stack 时会出现 java.util.ConcurrentModificationException?

ios - 在继承中传递变量 (Obj - C)

java - 具有多个继承类的通用返回类型的自引用方法