#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, я получаю правильную строку. Вот как я вызываю из основного класса
- Метод 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";
}
}