2016-10-23 3 views
1

Вот сценарий:значения переменных доступа устанавливается во время выполнения

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

класс C

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

Класс

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; 
} 
} 

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

  1. Метод SomeMethod() из класса А

2.Then Метод anothermethod() из класса B.

Извините, если мой вопрос немного noobish ,

ответ

2

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

+0

Спасибо за объяснение. Извините за мое неудобное сомнение. –

0

Настоящая рабочая версия. См. Комментарии:

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"; 
    } 
} 
Смежные вопросы