Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用接口在两个java类之间进行通信_Java_Interface_Scope_Class Method_Class Members - Fatal编程技术网

使用接口在两个java类之间进行通信

使用接口在两个java类之间进行通信,java,interface,scope,class-method,class-members,Java,Interface,Scope,Class Method,Class Members,我有两个班A和B 类实现常量{ private int state; } 我不想在B类中有A类的实例。我应该如何做? 如果我有一个函数来设置接口中的变量,那么两个类都必须实现这个函数。那是错误的,对吗?因为同一个函数的两个定义会发生冲突?在java中没有所谓的函数。它们是方法 您可以在类中设置getter和setter,以便从外部类设置和获取属性 你的问题不清楚 若您的B类扩展了A类,那个么通过B类的构造函数,您可以设置作为超类的A类的属性 希望有帮助 拥有接口并不意味着变量将在类

我有两个班A和B


类实现常量{

   private int state; 
}

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

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

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

你的问题不清楚

若您的B类扩展了A类,那个么通过B类的构造函数,您可以设置作为超类的A类的属性


希望有帮助

拥有接口并不意味着变量将在类之间共享,它更多的是定义必须重写接口中函数的类。你可以阅读它们的基本知识。要在两个类之间共享一个变量,可以将该变量设为静态变量,并将其放入两个类扩展的另一个类中(实际上是一个全局变量,这是一种错误的做法,并且不是线程安全的),或者让其中一个类具有另一个类的实例并调用getter/setter


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

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


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

问题不清楚。你想让B扩展A吗?
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;
}