0

我有2个A类和B类。

class A implements Constants{

   private int state; 

}

class B implements Constants{
foo(){
   //want to set state variable of class A like this
   state = state1
 }

}
interface Constants{
 public final int state1;
 public final int state2;
}

我不想在 B 类中有 A 类的实例。我该怎么做?如果我有一个在接口中设置变量的函数,那么两个类都必须实现这个函数。那会是错的吧?因为同一个函数的两个定义会发生冲突?

4

3 回答 3

1

java中没有所谓的函数。它们是方法。

您可以在您的类中使用 getter 和 setter 来设置属性并从外部类中获取它们。

你的问题不清楚。

如果你的 B 类扩展了 A 类,那么通过 B 类的构造函数,你可以设置作为超类的 A 类的属性。

希望能帮助到你!

于 2011-12-15T07:08:58.993 回答
0

拥有接口并不意味着变量将在类之间共享,它更多地是定义必须覆盖接口中的函数的类的一种方式。您可以在此处阅读有关它们的基础知识。要在两个类之间共享一个变量,您可以将变量设为静态并将其放在两个类都扩展的另一个类中(实际上是一个全局变量,这是不好的做法并且不是线程安全的),或者让其中一个类具有另一个实例并调用 getter/setter。

编辑:这里有一个类似的问题,向您展示了我对静态变量的意思。

于 2011-12-15T07:12:17.290 回答
0

您通常希望避免在一个类中编写任何试图改变另一个类的内部状态的方法。无论你想出什么技巧来完成这样的事情,你都在破坏封装的原则,这就是首先使用类的全部原因。

如果您希望从多个类中访问某个状态,我建议将该状态分解为它自己的类,并让这两个类中的每一个通过 getter/setter 或实用程序方法与其交互。

于 2011-12-15T07:19:27.737 回答