Java继承:父类中的对象实例与2个子类相同

Java继承:父类中的对象实例与2个子类相同,java,inheritance,parent-child,Java,Inheritance,Parent Child,我要做的是在父类中实例化一个名为“pObject”的对象(假定类型为受保护的布尔型)。扩展父类的一个子类将“object”设置为“true”。另一个扩展父类的子类将检查“object”是否设置为true 这在Java中可能吗 public abstract class parentClassAction{ protected Boolean pObject; } public class childClass1Action extends parentClassAction{

我要做的是在父类中实例化一个名为“pObject”的对象(假定类型为受保护的布尔型)。扩展父类的一个子类将“object”设置为“true”。另一个扩展父类的子类将检查“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");
        }
    }
}  

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

super.myBoolean = true;
注意:如果字段具有默认可见性(没有修饰符),则仅当子类位于同一个包中时才可以访问该字段

已编辑:由于问题中添加了新代码,我添加了信息。
您似乎喜欢检查来自两个不同对象的变量。只有在该变量是静态的情况下才有可能。因此,在父类中将其声明为
受保护的static
。代码的其余部分保持不变。

如果您有两个不同的子类实例,则它们不共享任何状态。它们中的每一个都有POObject的独立实例,因此,如果更改一个对象,它将不会在另一个对象中显示


有很多方法可以解决你的问题。最简单的方法是:您可以将此字段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());
    }
}

好的,我试着插入一个图像,但显然没有效果。我将设置一些伪代码避免伪代码--请显示真实代码。此外,字段是静态的还是非静态的?你的书面问题有点不清楚——请解释更多。让我们避免痛苦地从您那里提取信息。因此您有class
Root
和两个class
Child1扩展Root
Child2扩展Root
?这两个班对彼此一无所知。如果
Child1
的实例设置了
pObject
,这对
Child2
的实例(或
Child1
的另一个实例)没有任何影响。您需要从
Child2
中对
Child1
进行某种引用,否则,您无法真正确定某个对象是否已初始化。或者,你可以使用某种事件/观察者模式。我对我的问题进行了编辑,但“非私有”是不够的。另外,默认修饰符不合格我知道如何访问非私有字段,如我的问题中所示,我刚刚编辑/访问非私有字段不是我的问题有没有办法让子类共享pObject的实例?我只想要一个pObject的实例,然后我会选择
受保护的静态pObject
出于我的目的,如果重新启动应用程序,POObject的值将丢失,否则将对象设置为静态完全有效。我必须找到另一个涉及ldap(轻量级目录访问协议)的解决方案。Nogard、duckstep和Ian2TEDV确实回答了我特别称赞他们的问题。如果我有足够的声誉来支持他们的答案,我会的。如果
布尔标志
不能声明为
静态
,例如在多线程场景中,或者可能由于其他原因,有没有办法在
B类
C类
之间共享
标志
的值?