Vijay Krishnegowda Ответов: 2

Может ли кто-нибудь ответить на этот вопрос и объяснить ?


class test{
public static void main(String args[]){
b ref=new b();
ref.x=99;
ref.show();
}}
class a{
int x=10;}
class b extends a{
void show(){
a ref=new a();
System.out.println(super.x);}}


Что я уже пробовал:

когда я компилирую, я получаю ответ как 99, но я не понимаю ?

Vijay Krishnegowda

пожалуйста объясните мне как это работает

2 Ответов

Рейтинг:
0

CPallini

Класс b наследует x элемент данных из класса a Ваш код присваивает его, а затем печатает его значение. Неудивительно, что выход есть 99- Я должен сказать.
Обратите внимание, что в приведенном ниже коде

Цитата:
недействительным(){
a ref=новый a();
Системы.из.код println ("супер".х);}

заявление
a ref=new a();
это не имеет никакого эффекта: вы создаете новый объект, а затем счастливо игнорируете его.


Рейтинг:
0

Patrice T

Цитата:
когда я компилирую, я получаю ответ как 99, но я не понимаю ?

Ваш код ведет себя не так, как вы ожидаете, и вы не понимаете, почему !
Используйте отладчик и убедитесь сами:

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что вы должны делать, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.
Отладчик - Википедия, свободная энциклопедия[^]
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html[^]
https://www.jetbrains.com/idea/help/debugging-your-first-java-application.html[^]
Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.