如何从Java中的超类访问私有值?

时间:2014-10-11 15:43:44

标签: java

我想从超类MathProblem访问两个私有变量,但我不知道如何访问它们。我知道私有事物不是继承的,但我需要这两个变量来访问它们并添加它们并返回值。

abstract public class MathProblem {
    private int operand1;
    private int operand2;
    private int userAnswer;

    public MathProblem() {
        operand1 = RandomUtil.nextInt(99);
        operand2 = RandomUtil.nextInt(99);
    }

    public int getOperand1() {
        return operand1;
    }

    public void setOperand1(int operand1) {
        this.operand1 = operand1;
    }

    public int getOperand2() {
        return operand2;
    }

    public void setOperand2(int operand2) {
        this.operand2 = operand2;
    }

    public int getUserAnswer() {
        return userAnswer;
    }

    public void setUserAnswer(int userAnswer) {
        this.userAnswer = userAnswer;
    }
}

子类是这样的:

public class AdditionMathProblem extends MathProblem {
    StringBuilder sb = new StringBuilder();

    public AdditionMathProblem() {
        super();
        // can't access the private values.
    }

    @Override
    public int getAnswer() {    
        int result = getOperand1() + getOperand2();
        return result;
    }
}   

所以在课程AdditionMathProblem中,我使用getOperand1() + getOperand2()添加了两个值,但我需要这两个值字母才能访问它们。所以我的问题是:我有什么办法可以访问它们吗?

2 个答案:

答案 0 :(得分:2)

使用protected访问修饰符而不是private。这将允许子类访问其基类的成员。

答案 1 :(得分:0)

您无法直接从其外部访问私有变量。如果您希望该变量可由其父级访问,那么您可以:

  1. 将修饰符从私有更改为受保护。 或者
  2. 如果您希望变量保持私有,那么您可以创建一个返回该变量的publec方法。然后从子类中调用该方法。