2015-07-02 2 views
0

Почему мой вывод не дает ожидаемого результата, то есть 25? Я знаю, что мой вопрос глупо, но я новичок в программировании на Java. выходПодкласс не обновляет переменную, взятую из базового класса

run: 
5 
0 
0 
BUILD SUCCESSFUL (total time: 0 seconds) 

Но по мне ожидаемый ответ 5, как я прошел 5 в arguement.

class A { 
    int a; 

    public void setA(int a) { 
     this.a = a; 
    }  
} 

class B extends A {  
    public int multi() { 
     int multi = a * a; 
     System.out.println(multi); 
     return multi; 
    }  
} 

class test { 
    public static void main(String[] args) { 
     A obj1 = new A(); 
     obj1.setA(5); 
     B obj2 = new B(); 
     int c = obj2.multi(); 
     System.out.println(c);   
    }  
} 
+1

Пожалуйста, приложить больше усилий в форматирование кода в вашем вопросе - это * ужасно * читать в данный момент , –

+0

, пожалуйста, помогите .... –

+0

Я уже добавил ответ - теперь, есть ли причина, по которой вы не можете исправить свой вопрос, чтобы быть более читаемым? –

ответ

3

, почему выход не дает ожидаемого результата, т.е. 25

Поскольку у вас есть два различных объектов, каждый с независимым a полем. Вы устанавливаете значение 5 в один объект, но затем вызываете multi() на другой объект, поэтому он использует значение по умолчанию для поля (0).

Если вы используете один и тот же объект для обеих частей, вы получите правильный ответ:

B obj2 = new B(); 
A obj1 = obj2; // Now obj1 and obj2 refer to the same object 
obj1.setA(5); 
System.out.println(obj2.multi()); 
+0

Большое спасибо, сэр –

Смежные вопросы