首页 > 解决方案 > 从子类为私有属性赋值

问题描述

所以我有一个抽象类:


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”真或假。例如,如果“number2”和“number3”> 0,我想将 false 分配给“isTrue”。有没有办法使这项工作无需将“isTrue”更改为公共/受保护?谢谢你的帮助!

标签: javasubclass

解决方案


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

对于 number2 和 number3 > 0 的情况,您可以这样做:

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

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


推荐阅读