Java 如何在两个不同的类中使用getter和setter
如何在两个不同的类中使用getter setterJava 如何在两个不同的类中使用getter和setter,java,getter-setter,Java,Getter Setter,如何在两个不同的类中使用getter setter Class A{ int a = 10; GetterAndSetter gs = new GetterAndSetter(); gs.setValue(a); } Class GetterAndSetter { int a ; public void setValue(int a){ this.a = a; } public int getValue(){ return a;
Class A{
int a = 10;
GetterAndSetter gs = new GetterAndSetter();
gs.setValue(a);
}
Class GetterAndSetter {
int a ;
public void setValue(int a){
this.a = a;
}
public int getValue(){
return a;
}
}
class B {
int c;
GetterAndSetter gs = new GetterAndSetter();
c = gs.getValue();
}
当打印c时,它给出null。并告诉我它是否有效。您使用了不同的引用。您应该使用相同的引用,以便只有您可以访问该值。在类
A
中,您的代码创建了GetterAndSetter
的一个新实例,并为属性设置一个值。但是,在类B
中,您的代码再次创建另一个GetterAndSetter
的新实例,然后获取值
您的代码在类A
和B
中使用的实例不相同-因此,在尝试在B
中获取时,无法获取A
中设置的值。在B
中创建的GetterAndSetter
实例在B
中的代码退出后不再使用
要解决此问题,需要将对GetterAndSetter
实例的引用从类a
传递到B
。您可以这样做,例如将其作为参数传递给B
的方法,或者在B
中创建a
的新实例,并调用提供GetterAndSetter
实例的方法
第一个选项(作为参数传递)的示例:
为了连接实例,我们当然还需要另一段代码(假设A
和B
的实例已经存在):
每当你写这篇文章的时候
GetterAndSetter gs = new GetterAndSetter();
您要做的是创建一个新的GetterAndSetter
实例。您创建的两个实例之间没有任何连接
在类A
中,创建一个新实例,并设置其值。在类C
中,创建一个新实例,并读取其值。但是因为有两个不同的实例,所以读取的值与设置的值没有关联
这大致如下:
如果你想找到它,你必须在你放钱的同一个信封里寻找 它是有效的,下面是发生的情况: 在类A中创建对象gs 然后将该对象的a值设置为10 然后在类B中创建另一个对象gs 最后但并非最不重要的一点是,您可以询问类B中的对象gs其a的值是多少
猜怎么着,它是空的,因为您没有在任何地方设置它的值,所以它不会返回值。您需要了解oops的基本知识,您已经在类A中创建了一个实例,并且您正在尝试在类B中访问该实例,这只有在您将该对象的引用从类A传递到类B时才可能。在这种情况下,您必须在类B中拥有在类A中创建的GetterAndSetter实例,相反,您创建了另一个新实例,它将在内存中创建新引用,类变量
a
将为null。在您的代码中,类a和B都为GetterAndSetter创建新对象。因此,它们不在这些类之间共享。这就是为什么你会得到空值
我想知道你的代码如何为C打印null。我想它应该是“0”。如果它无效,那么你为什么要声明它打印
null
??请至少提供编译的代码。您粘贴的内容甚至不符合伪代码的条件……您是否在尝试编写getter/setter?使用了很好的类比--+1。谢谢,这是一个很好的示例。请告诉我如何使用B中的A信封取钱您需要取您在A
中创建的gs
,并将其传递给B
。您可以通过将其在构造函数中传递到B
,或者使用类型为GetterAndSetter
的B
字段,然后使用B
的s.5星(例如信封)的单独方法将实例传递到B
)代码中有什么是无效的?它是有效的Java,除了一个小的打字错误('class'vs'class')。缩进是扭曲的,所以很难阅读。显然,我没有发布完整的代码。您需要确保A和B的thrat实例都已正确初始化,并且GetterAndSetter实例已正确传递。
...
b.getValueFromGetterAndSetter(a.createAndSet());
...
GetterAndSetter gs = new GetterAndSetter();