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 і виконує решту операторів.
Після завершення виконання СуперПриклад1() , потік повертається до методу main() і виконує решту операторів.
Примітка: щоб використовувати super(), ми повинні переконатися, що він має бути першим оператором у конструкторі класу. Ми можемо використовувати його для посилання лише на конструктор батьківського класу.
це ключове слово та конструктор this().
це ключове слово
Це зарезервоване ключове слово в 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() посилається на безпосередній батьківський об’єкт класу. |
Він використовується для виклику поточного методу класу. | Він використовується для виклику методів батьківського класу. |
Його можна використовувати будь-де в параметризованому конструкторі. | Це завжди перший рядок у конструкторі дочірнього класу. |
Він використовується для виклику версії суперкласу перевизначеного методу. | Він використовується для виклику версії суперкласу перевизначеного методу. |