如何在两个类之间编写共享代码

时间:2019-02-09 22:26:49

标签: java android extends

在下面的代码中,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;
}

2 个答案:

答案 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更新的值相同的值。

相关问题