Java 继承:来自父项的对象实例 class 2 个子项相同 classes

Java Inheritance: instance of object from parent class same for 2 child classes

我想做的是在父对象 class 中实例化一个名为 "pObject" 的对象(假设要保护的类型是 Boolean)。扩展父 class 的一个子 class 将 "object" 设置为 "true"。另一个扩展父 class 的子 class 将检查 "object" 是否设置为 true。

这在 Java 中可行吗?

public abstract class parentClassAction{

    protected Boolean pObject;
}

public class childClass1Action extends parentClassAction{

    super.pObject = true;
}  

public class childClass2Action extends parentClassAction{

    if(super.pObject!=null){
        if(super.pObject == true){
            System.out.println("Success");
        }
    }
}  

您可以使用以下语法访问超级 class 的 非私有 字段:

super.myBoolean = true;

注意:如果该字段具有默认可见性(缺少修饰符),则仅当子 class 在同一包中时才可访问。

已编辑: 由于问题中添加了新代码,我添加了信息。 您似乎喜欢检查来自两个不同对象的变量。只有当该变量是静态的时才有可能。所以在父class中声明为protected static。其余代码保持不变。

如果您有 2 个不同的子类实例 - 它们不共享任何状态。他们每个人都有独立的 pObject 实例,所以如果你改变一个对象,它不会在另一个对象中看到。

有很多方法可以解决您的问题。最简单的方法:您可以将此字段 pObject 设为静态 - 它适用于简单的示例,但这也可能是一个严重的限制(如果您想要拥有多个 pObject 实例)。

您可以将 pObject 设为静态并以 parentClassAction.pObject.

的形式访问它

是的。如果 pObject 是静态的,它将被共享:

public class Legit {

    public static abstract class A {
        protected static Boolean flag;
    }

    public static class B extends A {
        public void setFlag(boolean flag) {
            super.flag = flag;
        }
    }

    public static class C extends A {
        public boolean getFlag() {
            return super.flag;
        }
    }

    public static void main (String [] args) {
        B b = new B();
        C c = new C();

        b.setFlag(true);
        System.out.println(c.getFlag());
        b.setFlag(false);
        System.out.println(c.getFlag());
    }
}