如何在两个不同的类
中使用getter setterClass 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();
}
打印时,它给出null。并告诉我它是否有效。
答案 0 :(得分:10)
每当你写这个
GetterAndSetter gs = new GetterAndSetter();
您正在做的是创建GetterAndSetter
的新实例。您创建的两个实例之间没有任何关联。
在类A
内,您创建一个新实例,并设置其值。在类C
内,您创建一个新实例,并读取其值。但是因为您有两个不同的实例,您正在阅读的价值与您正在设置的价值无关。
这大致类似于:
如果你想找到它,你必须在同一个信封中查看你的钱!
答案 1 :(得分:4)
在课程A
中,您的代码会创建一个GetterAndSetter
的新实例,并为该属性设置一个值。但是,在课程B
中,您的代码会再次创建 另一个新GetterAndSetter
实例,然后获取该值。
您的代码在类A
和B
中使用的实例并不相同 - 因此,当您尝试将其设置为A
时,您无法获取B
中设置的值GetterAndSetter
。 B
中的代码退出后,B
中创建的GetterAndSetter
实例不再使用。
要解决此问题,您需要将对A
实例的引用从类B
传递到B
。你可以这样做,例如将其作为参数传递给A
方法,或者在B
中创建GetterAndSetter
的新实例并调用提供Class A{
...
GetterAndSetter createAndSet();
int a = 10;
GetterAndSetter gs = new GetterAndSetter();
gs.setValue(a);
return gs;
}
...
}
class B {
...
void getValueFromGetterAndSetter(GetterAndSetter gs) {
int c;
c = gs.getValue();
...
}
...
}
实例的方法。< / p>
第一个选项的示例(作为参数传递):
A
要连接实例,我们当然还需要另外一段代码(假设已存在B
和...
b.getValueFromGetterAndSetter(a.createAndSet());
...
的实例):
{{1}}
答案 2 :(得分:0)
您使用了不同的参考。您应该使用相同的引用,以便只有您可以访问该值。
答案 3 :(得分:0)
你需要了解oops的基础知识,你已经在A类中创建了一个实例,并且你试图在B类中访问,这只有在你将该对象的引用从A类传递给B时才有可能。你必须拥有你在B类的A类中创建的GetterAndSetter实例,而是创建了另一个新实例,它将在内存中创建新的引用,类变量a
将为null。
答案 4 :(得分:0)
在您的代码中,A类和B类都为GetterAndSetter创建新对象。因此,这些类之间不共享它们。这就是为什么你得到null。
我的代码如何为C打印null。我认为它将是“0”而不是。
答案 5 :(得分:-1)
这是有效的,这是发生的事情:
您在A类中创建对象gs
然后将该对象的a值设置为10
然后在B类中创建另一个对象gs
最后但并非最不重要的是,你要问B类中的对象gs它的值是什么。
猜猜是什么,它的NULL因为你没有在任何地方设置它的值,所以它不会返回它。