Доступ к значениям переменных, установленным во время выполнения

#java #oop

#java #ооп

Вопрос:

Вот сценарий :

У меня есть 3 класса Class A, Class B и Class C. Теперь я вызываю метод, определенный на C, с типом возвращаемой строки в классе A. Я устанавливаю возвращаемое значение в другую строку в классе A. Теперь в классе B я создаю объект класса A и вызываю строку, установленную в A, используя объект. ЕСЛИ вы хотите знать, как выполняется, то сначала я вызываю метод, определенный на C в a, а затем строку в B. Но я получаю строковое значение NULL в классе B.

Класс C

 Class C{
 //method with return type as string
 public String getString(){
    return "Some String Here";
  }
}
  

Класс A

 Class A{
public String s;
public void somemethod(){
C obj = new C();
s= obj.getString();
  }
}
  

Класс B

 Class B(){
pubic void anothermethod(){
A obj = new A();
String ss = obj.s;
}
}
  

ss при печати выдает null в качестве своего значения. Когда я печатаю s, я получаю правильную строку. Вот как я вызываю из основного класса

  1. Метод somemethod() из класса A

2.Затем используйте anothermethod() из класса B.

Извините, если мой вопрос немного нубовский.

Ответ №1:

Если ваш вопрос касается того, как вы получаете значение null в ss , вы никогда не вызывали somemethod на obj в anothermethod . Каждый раз, когда вы вызываете anothermethod , вы создаете новый экземпляр, A в котором поле String s никогда не инициализировалось и по-прежнему равно null.

Комментарии:

1. Спасибо за объяснение. Извините за мои глупые сомнения.

Ответ №2:

Вот рабочая версия. Смотрите комментарии:

 class A{

    private C c;
    public void somemethod(){
        c = new C();//better put is A constructor 
    }
    public String getS() {
        return c.getString();
    }

    public static void main(String args[]) {
        new B().anothermethod();
    }
}

class B{

    public void anothermethod(){
        A a = new A(); //better put is B constructor 
        a.somemethod();
        System.out.println( a.getS()); //output: Some String Here
    }
}

class C{

    //method with return type as string
    public String getString(){
        return "Some String Here";
    }
}