Member 12966649 Ответов: 1

Как супер ключевое слово получает доступ к членам родительского класса?


первый класс
{
int a=100;
int b=200;
void get_data1(int p, int q)
{
a=p;
b=q;
}

}

два класса с помощью ключевого слова extends
{
Строка x;
Строка y;
Один О;
void get_data(строка x, строка y, одна q)
{
это.х=х;
это.г=г;
O=q;


}

дисплей пустоты()
{

Системы.из.код println("А======="+х);
Системы.из.код println("Б======="+г);
Системы.из.код println("О.====="+О.);
Системы.из.код println("О. Б====="+О. Б);
System. out. println ("Super. a=" +super. a);
Системы.из.код println("супер.б="+супер.б);

}

}

класс super_key
{
публичный статический пустота главный(строка[] аргументы)
{
Один obj1=новый();
Два obj2=New два();
obj1.get_data1(1,2);
obj2. get_data("A","B", obj1);
obj2.дисплей();
}
}

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

Он печатает a=100 & b=200, используя супер ключевое слово, хотя я инициализирую их как a=1 & b=2 через функцию get_data1()

1 Ответов

Рейтинг:
1

Richard MacCutchan

Хотя класс Two расширяет класс One ваши объекты полностью независимы. Свойства класса One в obj2 не то же самое, что свойства класса One в obj1.


Member 12966649

Связано ли это со стеком и кучей памяти , если это так, пожалуйста, объясните с этим

Richard MacCutchan

Нет, это не имеет ничего общего с памятью, это то, как объекты соотносятся друг с другом. Вы не можете изменить свойства в obj1 и ожидайте, что будете ссылаться на них в obj2 Эти два объекта совершенно различны и независимы.

Использование super ключевое слово позволяет ссылаться на свойства, объявленные в родительском классе, но они должны быть заданы в самом объекте, созданном в производном классе.