我有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;
}
private int state;
我不想在B班中有A班的实例。我该怎么做? 如果我有一个在接口中设置变量的函数,那么这两个类都必须实现这个函数。那会错的吗?因为同一个函数的2个定义会发生冲突吗?
答案 0 :(得分:1)
java中没有任何称为函数的东西。它们是方法。
您可以在类中使用getter和setter来设置属性并从外部类中获取它们。
你的问题不清楚。
如果您的B类扩展了A类,那么通过B类的构造函数,您可以设置作为超类的A类的属性。
希望它有所帮助!
答案 1 :(得分:0)
拥有一个接口并不意味着变量将在类之间共享,它更像是一种定义必须覆盖接口中的函数的类的方法。您可以阅读它们的基础知识here。要在两个类之间共享变量,您可以将变量设置为static并将其放在另一个类中,这两个类都扩展(实际上是一个全局变量,这是一种不好的做法,而不是线程安全的),或者其中一个类有另一个的实例并调用getter / setter。
编辑:有一个类似的问题here,它向您展示我对静态变量的意思。
答案 2 :(得分:0)
您通常希望避免在尝试更改另一个类的内部状态的类中编写任何方法。无论你想出什么诀窍来完成这样的事情,你都打破了封装的原则,这是首先使用类的全部原因。
如果有一些你希望从多个类可以访问的状态,我建议将该状态分解为它自己的类,让两个类中的每一个通过getter / setter或实用程序方法与它进行交互。