The ключове слово super в Java це довідкова змінна, яка використовується для посилання на батьківський клас, коли ми працюємо з об’єктами. Ви повинні знати основи Спадщина і Поліморфізм щоб зрозуміти ключове слово Java super.
Ключове слово супер з’явився на світ із концепцією спадщини. У цій статті ми розглянемо все про super у Java, включаючи визначення, приклади, використання, синтаксис тощо.
Зміст
- Характеристики Super Keyword в Java
- Використання ключового слова super в Java
- 1. Використання super зі змінними
- 2. Використання super with Methods
- 3. Використання super з конструкторами
- Переваги використання Java Super Keyword
Характеристики Super Keyword в Java
У Java ключове слово super використовується для посилання на батьківський клас підкласу. Ось деякі з його ключових характеристик:
- super використовується для виклику конструктора суперкласу: Коли створюється підклас, його конструктор повинен викликати конструктор свого батьківського класу. Це робиться за допомогою ключового слова super(), яке викликає конструктор батьківського класу.
- super використовується для виклику методу суперкласу: Підклас може викликати метод, визначений у його батьківському класі, використовуючи ключове слово super. Це корисно, коли підклас хоче викликати реалізацію методу батьківського класу на додаток до своєї власної.
- super використовується для доступу до поля суперкласу: Підклас може отримати доступ до поля, визначеного в його батьківському класі за допомогою ключового слова super. Це корисно, коли підклас хоче посилатися на версію поля батьківського класу.
- super має бути першим оператором у конструкторі: Під час виклику конструктора суперкласу оператор super() має бути першим оператором у конструкторі підкласу.
- super не можна використовувати в статичному контексті: Ключове слово super не можна використовувати в статичному контексті, наприклад у статичному методі чи ініціалізаторі статичної змінної.
- super не вимагається для виклику методу суперкласу: Хоча ключове слово super можна використовувати для виклику методу в батьківському класі, це не обов’язково. Якщо метод не перевизначено в підкласі, тоді його виклик без ключового слова super викличе реалізацію батьківського класу.
Загалом, супер ключове слово це потужний інструмент для підкласів у Java, що дозволяє підкласам успадковувати та створювати функціональні можливості своїх батьківських класів.
Використання ключового слова super в Java
Він переважно використовується в таких контекстах, як зазначено нижче:
- Використання super зі змінними
- Використання super with Methods
- Використання super з конструкторами
1. Використання super зі змінними
Цей сценарій виникає, коли похідний клас і базовий клас мають однакові члени даних. У цьому випадку існує ймовірність неоднозначності JVM .
Ми можемо зрозуміти це більш чітко на наступному прикладі:
приклад
Java
// super keyword in java example> > // Base class vehicle> class> Vehicle {> >int> maxSpeed =>120>;> }> > // sub class Car extending vehicle> class> Car>extends> Vehicle {> >int> maxSpeed =>180>;> > >void> display()> >{> >// print maxSpeed of base class (vehicle)> >System.out.println(>'Maximum Speed: '> >+>super>.maxSpeed);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Car small =>new> Car();> >small.display();> >}> }> |
>
>Вихід
Maximum Speed: 120>
У наведеному вище прикладі і базовий клас, і підклас мають член maxSpeed. Ми могли отримати доступ до maxSpeed базового класу в підкласі за допомогою ключового слова super.
2. Використання super with Methods
Це використовується, коли ми хочемо викликати батьківський клас метод . Отже, коли батьківський і дочірній класи мають однакові назви методів, для вирішення неоднозначності ми використовуємо ключове слово super.
Цей фрагмент коду допомагає зрозуміти використання ключового слова super.
приклад
Java
// super keyword in java example> > // superclass Person> class> Person {> >void> message()> >{> >System.out.println(>'This is person class
'>);> >}> }> // Subclass Student> class> Student>extends> Person {> >void> message()> >{> >System.out.println(>'This is student class'>);> >}> >// Note that display() is> >// only in Student class> >void> display()> >{> >// will invoke or call current> >// class message() method> >message();> > >// will invoke or call parent> >// class message() method> >super>.message();> >}> }> // Driver Program> class> Test {> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> > >// calling display() of Student> >s.display();> >}> }> |
>
>Вихід
This is student class This is person class>
У наведеному вище прикладі ми бачили, що якщо ми викликаємо лише метод повідомлення() потім викликається поточний клас message(), але з використанням ключового слова super, повідомлення() суперкласу також можна викликати.
3. Використання super з конструкторами
Ключове слово super також можна використовувати для доступу до конструктора батьківського класу. Ще одна важлива річ — «супер» може викликати як параметричні, так і непараметричні конструктори залежно від ситуації.
Нижче наведено фрагмент коду для пояснення вищезазначеної концепції:
Приклад 1
Java
поличні собаки
// Java Code to show use of> // super keyword with constructor> > // superclass Person> class> Person {> >Person()> >{> >System.out.println(>'Person class Constructor'>);> >}> }> > // subclass Student extending the Person class> class> Student>extends> Person {> >Student()> >{> >// invoke or call parent class constructor> >super>();> > >System.out.println(>'Student class Constructor'>);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Student s =>new> Student();> >}> }> |
>
>Вихід
Person class Constructor Student class Constructor>
У наведеному вище прикладі ми викликали конструктор суперкласу за допомогою ключового слова «super» через конструктор підкласу.
Приклад 2
Java
class> ParentClass {> >public> boolean> isTrue() {>return> true>; }> }> > class> ChildClass>extends> ParentClass {> >public> boolean> isTrue()> >{> >// calls parent implementation of isTrue()> >boolean> parentResult =>super>.isTrue();> >// negates the parent result> >return> !parentResult;> >}> }> > public> class> Main {> >public> static> void> main(String[] args)> >{> >ChildClass child =>new> ChildClass();> >// calls child implementation> >// of isTrue()> >boolean> result = child.isTrue();> > >// prints 'false'> >System.out.println(result);> >}> }> |
>
>Вихід
false>
Переваги використання Java Super Keyword
The ключове слово super в Java надає багато переваг в об'єктно-орієнтованому програмуванні:
- Дозволяє повторне використання коду : використання ключового слова super дозволяє підкласам успадковувати функціональні можливості своїх батьківських класів, що сприяє повторному використанню коду та зменшує дублювання.
- Підтримує поліморфізм : Оскільки підкласи можуть перевизначати методи та поля доступу своїх батьківських класів за допомогою super, можливий поліморфізм. Це забезпечує більш гнучкий і розширюваний код.
- Надає доступ до поведінки батьківського класу : підкласи можуть отримувати доступ до методів і полів, визначених у їхніх батьківських класах, і використовувати їх за допомогою ключового слова super, що дозволяє їм використовувати існуючу поведінку без необхідності її повторного впровадження.
- Дозволяє налаштовувати поведінку: Перевизначаючи методи та використовуючи super для виклику батьківської реалізації, підкласи можуть налаштовувати та розширювати поведінку своїх батьківських класів.
- Полегшує абстракцію та інкапсуляцію: Використання super сприяє інкапсуляції та абстракції, дозволяючи підкласам зосереджуватися на своїй поведінці, покладаючись на батьківський клас для обробки деталей нижчого рівня.
Загалом, ключове слово super є ключовою особливістю успадкування і поліморфізм в Java, і це надає кілька переваг для розробників, які прагнуть писати багаторазовий, розширюваний і добре організований код.
Важливі моменти, які слід пам’ятати під час використання Java Super Keyword
Ось кілька важливих моментів, на які вам потрібно звернути увагу під час використання суперключових слів у Java:
- Виклик super() має бути першим оператором у класі Derived(Student). конструктор тому що, якщо ви подумаєте про це, має сенс, що суперклас не знає жодного підкласу, тому будь-яка ініціалізація, яку він повинен виконати, є окремою та, можливо, передумовою будь-якої ініціалізації, яку виконує підклас. Тому спочатку потрібно завершити його виконання.
- Якщо конструктор явно не викликає конструктор суперкласу, компілятор Java автоматично вставляє виклик безаргументного конструктора суперкласу. Якщо суперклас не має конструктора без аргументів, ви отримаєте помилку під час компіляції. Об'єкт робить мати такий конструктор, тож якщо Object є єдиним суперкласом, проблем немає.

- Якщо конструктор підкласу викликає конструктор свого суперкласу, явно чи неявно, ви можете подумати, що викликається цілий ланцюжок конструкторів, аж до конструктора Object. Це, власне, так і є. Це називається ланцюжок конструктора .
Поширені запитання – Java super Keyword
Q1. Що таке ключове слово super () і super у Java?
Супер() це ключове слово Java, яке використовується для виклику конструктора суперкласу. Super отримує доступ до членів суперкласу та підтримує ієрархію успадкування.
Q2. Який суперклас Java?
The Клас об'єктів, він же суперклас знаходиться на вершині ієрархії класу в Пакет java.lang Java . Кожен клас, будь то попередньо визначений або визначений користувачем, є підкласом класу Object.
Q3. Чому Super важливий у Java?
super має важливе значення в Java, оскільки полегшує доступ, ініціалізацію та керування зв’язками між суперкласами та підкласами, тим самим сприяючи повторному використанню коду.