使用接口在2个Java类之间进行通信

问题描述 投票:0回答:3

我有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; } 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; } 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类的实例。我该怎么做? 如果我有一个在接口中设置变量的函数,则两个类都必须实现此函数。 那是错的吧? 因为然后相同功能的2个定义会冲突?

java interface scope class-method class-members
3个回答
1
投票

在Java中没有什么叫做函数。 他们是方法。

您可以在类中具有getter和setter,以便从外部类设置和获取属性。

您的问题不清楚。

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

希望能帮助到你!


0
投票

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

编辑:有一个类似的问题在这里将告诉您,我的意思是对静态变量。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.