【问题标题】:How to write a shared code between two classes如何在两个类之间编写共享代码
【发布时间】:2019-07-03 19:37:30
【问题描述】:

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

【问题讨论】:

    标签: java android extends


    【解决方案1】:

    您可以从 Class 1 和 2 中删除 setValid 和 getValid 并使用父函数 SetValid 和 GetValid 如果这是你的问题。

    【讨论】:

      【解决方案2】:

      如果您的目标是让您的类的所有实例始终具有相同的值,那么您可以简单地使用 static 关键字。

      public abstract class AbstractClass {
      
          public static int isValid = -1;
      
          ...
      
      }
      

      static 用于全局变量时,您实质上是在声明这个全局变量将由该类的每个实例共享,包括它的子类。

      因此,使用 Class_1 中的新值更新 isValid 将导致 Class_2 具有与更新的 Class_1 相同的值。

      【讨论】:

        猜你喜欢
        • 2014-07-05
        • 1970-01-01
        • 1970-01-01
        • 2021-06-21
        • 2019-09-04
        • 1970-01-01
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多