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'); } }
Изход:
В метода main() направихме изявление нов SuperExample1() . Извиква конструктора на СуперПример1 клас.
Вътре в конструктора направихме изявление супер() който извиква конструктора на своя родителски клас, т.е. котка В конструктора сме направили три изявления:
- Инициализирайте цвета със стойност 'Кафяв'.
- Отпечатайте член на данните на родителския клас.
- Отпечатайте текущия член на данните на класа.
Когато се изпълни вторият оператор, потокът на програмата прескача към клас 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'); } }
Изход:
Разлика между тази и супер ключова дума
Следната таблица описва основната разлика между това и супер:
това | супер |
---|---|
Текущият екземпляр на класа е представен от тази ключова дума. | Текущият екземпляр на родителския клас е представен от ключовата дума super. |
За да извикаме конструктора по подразбиране на текущия клас, можем да използваме тази ключова дума. | За да извикаме конструктора по подразбиране на родителския клас, можем да използваме ключовата дума super. |
Може да се посочи от статичен контекст. Това означава, че може да бъде извикан от статичен контекст. | Не може да се посочи от статичен контекст. Това означава, че не може да бъде извикан от статичен контекст. |
Можем да го използваме за достъп само до текущите членове на клас данни и членски функции. | Можем да го използваме за достъп до членовете на данните и членските функции на родителския клас. |
Разлика между конструктора this() и super().
това() | супер() |
---|---|
Конструкторът this() препраща към текущия обект на класа. | Конструкторът super() препраща непосредствен родителски обект на класа. |
Използва се за извикване на метода на текущия клас. | Използва се за извикване на методи на родителски клас. |
Може да се използва навсякъде в параметризирания конструктор. | Винаги е първият ред в конструктора на дъщерния клас. |
Използва се за извикване на версия на суперклас на заменен метод. | Използва се за извикване на версия на суперклас на заменен метод. |