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());
}
}
我想做的是在父对象 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());
}
}