logo

Разлика между това и супер в Java

The 'това' и ' супер' ключовите думи са запазени думи, които се използват в различен контекст. Освен това Java предоставя също това() и супер() конструктори, които се използват в контекста на конструктора. В този раздел ще обсъдим разлики между тази и супер ключова дума и this() и super() конструктор, в Java.

ключова дума super и конструктор super().

супер ключова дума

Запазена ключова дума, използвана за извикване на метода или променливата на базовия клас, е известна като a супер ключова дума. Не можем да използваме супер ключова дума като идентификатор . Ключовата дума super не се използва само за обозначаване на екземпляра на базовия клас, но и за статични членове.

super() Конструктор

The супер() се използва главно за извикване на членски функции и конструктори на базов клас.

Нека вземем пример и за двете супер ключова дума и супер() за да разберете как работят.

SuperExample1.java

 // import required classes and packages package javaTpoint.MicrosoftJava; // create Animal class which is base class of Animal class Animal{ // data member of Animal class String color = 'white'; } // create child class of Animal class Cat extends Animal{ //default constructor Cat() { // data members of the Cat class String color = 'Brown'; System.out.println('The cat is of color '+super.color); // calling parent class data member System.out.println('The cat is of color '+color); } } // create child class for Car class SuperExample1 extendsCat { // default constructor SuperExample1() { // calling base class constructor super(); System.out.println('The eyes of the cat is blue.'); } // main() method start publicstaticvoid main(String[] args) { // call default constructor of the SuperExample1 new SuperExample1(); System.out.println('Inside Main'); } } 

Изход:

това срещу супер в Java

В метода main() направихме изявление нов SuperExample1() . Извиква конструктора на СуперПример1 клас.

Вътре в конструктора направихме изявление супер() който извиква конструктора на своя родителски клас, т.е. котка В конструктора сме направили три изявления:

  1. Инициализирайте цвета със стойност 'Кафяв'.
  2. Отпечатайте член на данните на родителския клас.
  3. Отпечатайте текущия член на данните на класа.

Когато се изпълни вторият оператор, потокът на програмата прескача към клас Animal за достъп до стойността на неговите членове с данни. След достъп до него потокът се връща към котка конструктор на клас и го отпечатва. След това последният оператор изпълнява и отпечатва стойността на променливите на текущия клас.

След изпълнение на последния оператор на котка клас, потокът се връща към конструктора на класа СуперПример1 и изпълнява останалите оператори.

След приключване на изпълнението на SuperExample1() , потокът се връща към метода main() и изпълнява останалите изрази.

Забележка: За да използваме super(), трябва да сме сигурни, че той трябва да бъде първият оператор в конструктора на клас. Можем да го използваме за препратка само към конструктора на родителския клас.

тази ключова дума и този() конструктор

тази ключова дума

Това е запазена ключова дума в Java, която се използва за препратка към текущия обект на класа. Това е референтна променлива, чрез която се извиква методът. Други употреби на тази ключова дума са:

  • Можем да го използваме за препращане към променлива на екземпляр на текущия клас.
  • Можем да го използваме, за да извикаме метода на текущия клас (имплицитно).
  • Можем да го предадем като аргумент в извикванията на метода и конструктора.
  • Можем също да го използваме за връщане на текущия клас от метода.

this() Конструктор

Конструкторът се използва за извикване на един конструктор от другия от същия клас. Да вземем пример и за двете това ключова дума и това() за да разберете как работят.

ThisExample1.java

 // import required classes and packages package javaTpoint.MicrosoftJava; // create ThisExample1 class to understand the working of this() and this class ThisExample1 { // initialize instance and static variable int x = 5; staticinty = 10; // default constructor of class ThisExample1 ThisExample1() { // invoking current class constructor this(5); System.out.println('We are insie of the default constructor.'); System.out.println('The value of x = '+x); } ThisExample1(int x) { this.x = x; // override value of the current class instance variable System.out.println('We are inside of the parameterized constructor.'); System.out.println('The value of y = '+y); } publicstaticvoid main(String[] args) { // invoking constructor of the current class new ThisExample1(); System.out.println('Inside Main'); } } 

Изход:

това срещу супер в Java

Разлика между тази и супер ключова дума

Следната таблица описва основната разлика между това и супер:

това супер
Текущият екземпляр на класа е представен от тази ключова дума. Текущият екземпляр на родителския клас е представен от ключовата дума super.
За да извикаме конструктора по подразбиране на текущия клас, можем да използваме тази ключова дума. За да извикаме конструктора по подразбиране на родителския клас, можем да използваме ключовата дума super.
Може да се посочи от статичен контекст. Това означава, че може да бъде извикан от статичен контекст. Не може да се посочи от статичен контекст. Това означава, че не може да бъде извикан от статичен контекст.
Можем да го използваме за достъп само до текущите членове на клас данни и членски функции. Можем да го използваме за достъп до членовете на данните и членските функции на родителския клас.

Разлика между конструктора this() и super().

това() супер()
Конструкторът this() препраща към текущия обект на класа. Конструкторът super() препраща непосредствен родителски обект на класа.
Използва се за извикване на метода на текущия клас. Използва се за извикване на методи на родителски клас.
Може да се използва навсякъде в параметризирания конструктор. Винаги е първият ред в конструктора на дъщерния клас.
Използва се за извикване на версия на суперклас на заменен метод. Използва се за извикване на версия на суперклас на заменен метод.