如何在两个不同的类中使用getter和setter

时间:2014-08-20 12:11:30

标签: 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 B {

    int c;
    GetterAndSetter gs = new GetterAndSetter();
    c = gs.getValue();
}

打印时,它给出null。并告诉我它是否有效。

6 个答案:

答案 0 :(得分:10)

每当你写这个

GetterAndSetter gs = new GetterAndSetter();

您正在做的是创建GetterAndSetter的新实例。您创建的两个实例之间没有任何关联。

在类A内,您创建一个新实例,并设置其值。在类C内,您创建一个新实例,并读取其值。但是因为您有两个不同的实例,您正在阅读的价值与您正在设置的价值无关。

这大致类似于:

  1. 我买了一个信封,里面放了一些钱。
  2. 后来,我想收回钱,所以我买了一个新信封,并在里面找钱。
  3. 如果你想找到它,你必须在同一个信封中查看你的钱!

答案 1 :(得分:4)

在课程A中,您的代码会创建一个GetterAndSetter的新实例,并为该属性设置一个值。但是,在课程B中,您的代码会再次创建 另一个新GetterAndSetter实例,然后获取该值。

您的代码在类AB中使用的实例并不相同 - 因此,当您尝试将其设置为A时,您无法获取B中设置的值GetterAndSetterB中的代码退出后,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因为你没有在任何地方设置它的值,所以它不会返回它。