将值从子类分配给私有属性

问题描述 投票:0回答:2

所以我有一个抽象类:


public abstract class Superclass {
    private final boolean isTrue;
    private final int number1;
    private final int number2;
    private final int number3;

    public Superclass(boolean isTrue, int number1, int number2, int number3) {
        this.isTrue = isTrue;
        this.number1 = Math.abs(number1);
        this.number2 = Math.abs(number2);
        this.number3 = Math.abs(number3);
    }

最重要的是,我创建了“超类”的子类,该子类应该具有2个公共构造函数:


public class Subclass extends Superclass{

    public Subclass(int number2, int number3) {
     ...
    }

    public Subclass(int number1, int number2, int number3) {
     ...
    }

现在,我想根据这些数字的值在这些构造函数中分配“ isTrue” true或false。例如如果“数字2”和“数字3”> 0,我想将false分配给“ isTrue”。有没有一种方法可以使这项工作而不必将“ isTrue”更改为公共/受保护的?谢谢您的帮助!

java subclass
2个回答
0
投票

您可以使用现有的构造函数来解决这个问题。

对于数字2和数字3> 0,可以执行此操作:

public Subclass(int number2, int number3) {
   super(!(number2 > 0 && number3 > 0), 0, number2, number3);
}

可以对其他构造函数进行类似的更改。


0
投票

子级可以使用super()方法访问父级的构造函数。为了简化@Sunil的建议,

public Subclass(int number1, int number2, int number3) {
  super(checkCondition(number2, number3), number1, number2, number3)
}

并且在checkCondition中,您可以提及所有必要和复杂的条件

private checkCondition(int a, int b){
  return !(a>0 && b>0);
}
© www.soinside.com 2019 - 2024. All rights reserved.