在下面的代码中,class_1和class_2都从AbstractClass扩展。我在打电话时正在尝试:
c1.setValid(5)
以下两行也返回5:
System.out.println(c1.getValid());
System.out.println(c2.getValid());
请让我知道如何修改Super类以实现该目标。
主要:
public class Main {
public static void main (String[] args) {
Class_1 c1 = new Class_1();
Class_2 c2 = new Class_2();
System.out.println(c1.getValid());
System.out.println(c2.getValid());
c1.setValid(5);
System.out.println(c1.getValid());
System.out.println(c2.getValid());
}
}
class_1
public class Class_1 extends AbstractClass {
public Class_1() {
// TODO Auto-generated constructor stub
}
public void setValid(int v) {
SetValid(v);
}
public int getValid() {
return GetValid();
}
}
class_2 。:
public class Class_2 extends AbstractClass {
public Class_2() {
// TODO Auto-generated constructor stub
}
public void setValid(int v) {
SetValid(v);
}
public int getValid() {
return GetValid();
}
}
代码:
public abstract class AbstractClass {
public int isValid = -1;
public void SetValid(int value) {
this.isValid = value;
}
public int GetValid() {
return this.isValid;
}
答案 0 :(得分:0)
您可以从类1和2中删除setValid和getValid 并使用父母的功能SetValid和GetValid 如果是您的问题。
答案 1 :(得分:0)
如果您的目标是使类的所有实例始终具有相同的值,则可以简单地使用static
关键字。
public abstract class AbstractClass {
public static int isValid = -1;
...
}
将static
用作全局变量时,您实际上是在声明该全局变量将由此类的每个实例(包括其子代)共享。
因此,用isValid
中的新值更新Class_1
将导致Class_2
具有与Class_1
更新的值相同的值。