Хотя мы используем этот/супер для вызова любых нестатических членов класса, JVM создает любой объект для соответствующего класса.«это» и «супер» использование ключевых слов в Java
И если я изменяю любую статическую переменную в суперклассе, используя «супер», это изменение также находит отражение в подклассе.
class A
{
int i;
}
class Test extends A {
void test()
{
super.i = 10;
this.i = 8;
System.out.println("super.i = " + super.i);
System.out.println("this.i = " + this.i);
}
public static void main(String[] args) {
Test obj = new Test();
obj.test();
}
}
Что именно ваш вопрос? –
Использование 'this' или' super' не вызывает создание каких-либо объектов. 'this' по сути присутствует во всех методах экземпляра, а' super' - это просто специальный тип вызова, который использует таблицу методов суперкласса, а не таблицу текущего класса. –
Что касается ссылок на экземпляры экземпляров, если 'int i;' объявлен в обоих классах, тогда создаются два разных поля, и они ведут себя точно так, как если бы они были названы, скажем, 'j' и' k'. Однако, если у вас есть только 'i', объявленный в суперклассе, есть только один экземпляр, а' this.i' и 'super.i' ссылаются на то же самое поле. –