为子类的私有属性赋值
assign value to private attribute from subclass
所以我有一个摘要class:
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);
}
最重要的是,我创建了一个 "Superclass" 的子 class,它应该有 2 个 public 构造函数:
public class Subclass extends Superclass{
public Subclass(int number2, int number3) {
...
}
public Subclass(int number1, int number2, int number3) {
...
}
现在我想在这些构造函数中分配 "isTrue" true 或 false,具体取决于数字的值。例如如果 "number2" 和 "number3" > 0,我想将 false 分配给 "isTrue"。有没有一种方法可以在不将 "isTrue" 更改为 public/protected 的情况下完成这项工作?感谢您的帮助!
您可以使用现有的构造函数来解决这个问题。
对于 number2 和 number3 > 0 的情况,您可以这样做:
public Subclass(int number2, int number3) {
super(!(number2 > 0 && number3 > 0), 0, number2, number3);
}
可以对另一个构造函数进行类似的更改。
子级可以使用 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);
}
所以我有一个摘要class:
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);
}
最重要的是,我创建了一个 "Superclass" 的子 class,它应该有 2 个 public 构造函数:
public class Subclass extends Superclass{
public Subclass(int number2, int number3) {
...
}
public Subclass(int number1, int number2, int number3) {
...
}
现在我想在这些构造函数中分配 "isTrue" true 或 false,具体取决于数字的值。例如如果 "number2" 和 "number3" > 0,我想将 false 分配给 "isTrue"。有没有一种方法可以在不将 "isTrue" 更改为 public/protected 的情况下完成这项工作?感谢您的帮助!
您可以使用现有的构造函数来解决这个问题。
对于 number2 和 number3 > 0 的情况,您可以这样做:
public Subclass(int number2, int number3) {
super(!(number2 > 0 && number3 > 0), 0, number2, number3);
}
可以对另一个构造函数进行类似的更改。
子级可以使用 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);
}