logo

Суперключове слово в Java

The супер Ключове слово в Java є посиланням на змінну, яка використовується для посилання на безпосередній батьківський об’єкт класу.

Щоразу, коли ви створюєте екземпляр підкласу, екземпляр батьківського класу створюється неявно, на який посилається змінна суперпосилання.

Використання Java super Keyword

  1. super можна використовувати для посилання на змінну примірника безпосереднього батьківського класу.
  2. super можна використовувати для виклику методу безпосереднього батьківського класу.
  3. super() можна використовувати для виклику конструктора безпосереднього батьківського класу.
Використання ключового слова Java Super

1) super використовується для посилання на змінну примірника безпосереднього батьківського класу.

Ми можемо використовувати ключове слово super для доступу до елемента даних або поля батьківського класу. Він використовується, якщо батьківський і дочірній класи мають однакові поля.

поличні собаки
 class Animal{ String color='white'; } class Dog extends Animal{ String color='black'; void printColor(){ System.out.println(color);//prints color of Dog class System.out.println(super.color);//prints color of Animal class } } class TestSuper1{ public static void main(String args[]){ Dog d=new Dog(); d.printColor(); }} 
Перевірте зараз

Вихід:

 black white 

У наведеному вище прикладі обидва класи Animal і Dog мають спільну властивість color. Якщо ми надрукуємо властивість color, за замовчуванням буде надруковано колір поточного класу. Щоб отримати доступ до батьківської властивості, нам потрібно використати ключове слово super.

2) super можна використовувати для виклику методу батьківського класу

Ключове слово super також можна використовувати для виклику методу батьківського класу. Його слід використовувати, якщо підклас містить той самий метод, що й батьківський клас. Іншими словами, він використовується, якщо метод перевизначено.

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void eat(){System.out.println('eating bread...');} void bark(){System.out.println('barking...');} void work(){ super.eat(); bark(); } } class TestSuper2{ public static void main(String args[]){ Dog d=new Dog(); d.work(); }} 
Перевірте зараз

Вихід:

 eating... barking... 

У наведеному вище прикладі Animal і Dog обидва класи мають метод eat(), якщо ми викликаємо метод eat() із класу Dog, він викличе метод eat() класу Dog за умовчанням, оскільки пріоритет надається локальному.

Щоб викликати метод батьківського класу, нам потрібно використати ключове слово super.

3) super використовується для виклику конструктора батьківського класу.

Ключове слово super також можна використовувати для виклику конструктора батьківського класу. Давайте розглянемо простий приклад:

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ super(); System.out.println('dog is created'); } } class TestSuper3{ public static void main(String args[]){ Dog d=new Dog(); }} 
Перевірте зараз

Вихід:

 animal is created dog is created 

Примітка: super() додається до кожного конструктора класу автоматично компілятором, якщо немає super() або this().

Java чудова

Ми добре знаємо, що конструктор за замовчуванням надається компілятором автоматично, якщо конструктора немає. Але він також додає super() як перший оператор.

Інший приклад ключового слова super, де super() надається компілятором неявно.

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); }} 
Перевірте зараз

Вихід:

 animal is created dog is created 

супер приклад: реальне використання

Давайте подивимося на реальне використання ключового слова super. Тут клас Emp успадковує клас Person, тому всі властивості Person будуть успадковані Emp за замовчуванням. Щоб ініціалізувати всі властивості, ми використовуємо конструктор батьківського класу з дочірнього класу. Таким чином, ми повторно використовуємо конструктор батьківського класу.

 class Person{ int id; String name; Person(int id,String name){ this.id=id; this.name=name; } } class Emp extends Person{ float salary; Emp(int id,String name,float salary){ super(id,name);//reusing parent constructor this.salary=salary; } void display(){System.out.println(id+' '+name+' '+salary);} } class TestSuper5{ public static void main(String[] args){ Emp e1=new Emp(1,'ankit',45000f); e1.display(); }} 
Перевірте зараз

Вихід:

 1 ankit 45000