what is inheritance java tutorial with examples
Цей посібник пояснює поняття спадщини в Java, пов’язані з цим терміни, такі як ключові слова „extends” та „super”, підклас, суперклас, зв’язки Is-A, HAS-A тощо:
Дізнавшись про три Стовпи ООП, а саме Абстракцію, Інкапсуляцію та Поліморфізм на Java, ми дійшли до останнього стовпа ООП, тобто успадкування.
Починаючи з цього підручника, ми обговоримо успадкування в Java у наступних кількох посібниках.
=> Прочитайте серію Easy Java Training.
Що ви дізнаєтесь:
Спадщина в Java
Спадкування в Java можна визначити як техніку або процес, при якому один об'єкт класу набуває поведінки та властивостей іншого об'єкта. Це робиться шляхом успадкування класу або встановлення зв'язку між двома класами.
Наприклад, жаба - земноводне. Як і інші тварини класу земноводних, жаба може мати багато характеристик, спільних для інших тварин. Отже, тут земноводне - це вид, а тварини, такі як жаби, є його членами.
Якщо нам потрібно представити вид земноводних та його членів у програмному представленні за допомогою ООП, то ми будемо розробляти клас «Земноводні», що містить властивості або поведінку, загальні для земноводних загалом.
Таким чином, нам не потрібно повторювати загальні властивості та поведінку кожної описаної нами тварини земноводних. Ми безпосередньо створимо клас для тварин земноводних та успадковуємо їх від класу земноводних, як показано нижче.

Тож загальна ідея функції «Спадкування» полягає в тому, що ми можемо створювати нові класи, успадковуючи їх від вже існуючих класів. Успадковуючи вже існуючі класи, ми отримуємо можливість використовувати властивості та поведінку цих класів. Крім того, ми можемо додати більше властивостей та / або поведінки в наш новий клас.
Функція успадкування зображує батько-дитина ”Зв’язок або стосунки в Java. Клас, від якого успадковується новий клас, називається “ Клас батьків ', Тоді як новий клас називається' Дитячий клас '.
Спадщина в основному використовується:
- Для перевизначення методу щоб ми могли досягти поліморфізм часу виконання .
- До повторно використати код . Успадковуючи вже існуючі класи, ми забезпечуємо багаторазовість коду.
Загальноприйнята термінологія, яка використовується у спадщині
- Багаторазове використання: Механізм, за допомогою якого нові класи повторно використовують поля чи властивості та методи існуючого класу.
- Клас: Клас - це сукупність об’єктів, що мають загальні властивості. Клас можна розглядати як шаблон або синій друк для об’єктів.
- Підклас / дочірній клас: Класом, який успадковується від іншого класу, є підклас, дочірній клас або похідний клас.
- Суперклас / Клас батьків: Клас, який успадковується іншим класом для придбання властивостей і методів, називається батьківським класом або суперкласом або базовим класом.
Наступна ієрархія успадкування є прикладом показу суперкласу та підкласу.

У нас є клас Employee із полями OrganisationName та EmployeeId. Він може також мати інші поля, такі як ім'я працівника, відділ та інші дані про співробітника.
Потім ми отримуємо ще один клас під назвою „SoftwareDeveloper” із зарплатою та пільгами. Клас Клас SoftwareDeveloper успадковується від класу Employee, а отже, він також набуває властивостей класу Employee.
Як показано на наведеній вище схемі, тут клас Employee - це клас Super або Base, а SoftwareDeveloper - підклас або похідний клас.
«Розширює» ключове слово в Java
У Java ключове слово ‘extends’ використовується для успадкування класу.
Загальний синтаксис успадкування Java наведено нижче:
class SubClass extends SuperClass { //subclass methods and fields }Як показано вище, ключове слово ‘extends’ з’являється після імені класу в синтаксисі оголошення класу.
Ключове слово ‘extends’ повідомляє, що ми створюємо новий клас ‘SubClass’, який успадкує властивості та поведінку від ‘SuperClass’. Іншими словами, ключове слово extends вказує на те, що ми будуємо новий клас SubClass на існуючій функціональності SuperClass.
Спадщина, реалізована за допомогою ключового слова ‘extends’, є успадкуванням класу. У наступному підручнику ми обговоримо ще одне ключове слово «реалізації», за допомогою якого ми можемо успадкувати інтерфейси.
Приклад класу Employee-SoftwareDeveloper, який ми пояснили вище, може бути представлений у вигляді:
class Employee{ String OrganizationName; int EmployeeId; } class SoftwareDeveloper extends Employee{ float Salary; float Perks; } Взаємозв’язок IS-A І HAS-A
Розглянемо таку структуру класів:
class Mammal{ } class Cow extends Mammal{ }То як ми можемо інтерпретувати вищезазначену структуру? Оскільки клас Cow поширюється або успадковує ссавців, ми можемо сказати “Cow Є Ссавці »або« Корова Є вид Ссавці ”. Отже, коли ми виражаємо такі відносини, саме ці стосунки є відносинами “IS_A”.
У наведеній вище структурі ми використовували ієрархію успадкування, щоб виразити той факт, що один вид є іншим. Отже, у наведеній вище структурі ми використали спадщину для позначення стосунків між Коровою та Ссавцем.
Подібним чином ми можемо висловити ще деякі взаємозв'язки IS-A наступним чином:

Вище наведені деякі загальні приклади відносин, які ми можемо виразити, використовуючи успадкування в Java.
Загалом, відносини IS-A можуть бути виражені за допомогою успадкування.
Тепер давайте розглянемо приклад нижче:

На наведеній вище схемі ми бачимо, що транспортний засіб має дві частини, тобто двигун і гальмо. То як ми можемо описати цей сценарій словами?
Ми можемо сказати, що «Автомобіль містить двигун і транспортний засіб містить гальмо ”.
Отже, ми тут висловлюємо не відношення “IS-A”, а відношення стримування, в якому ми вказуємо один об’єкт як частину іншого об’єкта.
найкращий засіб для чищення ПК для Windows 7
У наведеному вище прикладі двигун - це частина транспортного засобу. Це не “ типу ”Транспортний засіб. Це ' МАЄ ”Або взаємозв’язок або вміст у Java. Взаємозв'язок Has-a у Java виражається включенням об'єкта як члена класу.
Отже, якщо ми слідуємо одному і тому ж прикладу транспортного засобу вище, то ми можемо висловити це, як показано нижче:
class Engine{ } class Brake { } class Vehicle{ Engine e; Brake b; } Тож Транспортний засіб має двигун та гальмо. Висловлюючи відносини вищевказаним способом, ми не зацікавлені у внутрішній реалізації двигуна або гальма. Клас транспортного засобу дозволить класам двигуна та гальма знати, що потрібно, і ці класи це забезпечать.
Як і зв'язок IS-A, зв'язок HAS-A також корисний при повторному використанні коду.
У цьому підручнику ми детально обговоримо спадкування (IS-A), а в наступному посібнику - Обмеження або склад (HAS-A).
Приклад успадкування Java
Давайте реалізуємо простий приклад на Java, щоб продемонструвати успадкування.
//example class demonstrating Inheritance in Java class BaseClass { public void display() { System.out.println('BaseClass::Display'); } } //create a new class from BaseClass class DerivedClass extends BaseClass { public void print() { System.out.println('DerivedClass::print'); } } class Main { public static void main(String() args) { //create an object of DerivedClass DerivedClass d1 = new DerivedClass(); d1.display(); //call BaseClass method d1.print(); //call DerivedClass method } }Вихід:

Наведена програма показує простий приклад успадкування. Оголошено BaseClass з одним методом. Потім оголошується інший клас DerivedClass, який розширює BaseClass. Цей клас також має один метод.
В основному методі програми ми створюємо об’єкт DerivedClass і за допомогою цього об’єкта ми називаємо BaseClass, а також метод DerivedClass.
На виході відображаються повідомлення, надруковані обома методами. Оскільки DerivedClass розширює BaseClass, а метод BaseClass є загальнодоступним, це видно для DerivedClass.
«Супер» ключове слово в Java
У спадщині ми маємо справу з суперкласами або батьківськими класами та дитячими класами. Якщо нам доводиться проміжно отримувати доступ до членів суперкласу, включаючи змінні, методи чи конструктори, тоді нам потрібно мати якийсь механізм. Цей механізм доступу до членів базового класу надається на Java за допомогою ключового слова “super”.
Тож у яких сценаріях ми використовуємо ключове слово «супер» у Java?
Нижче наведено сценарії, в яких ключове слово 'супер' може бути корисним.
- Коли клас super / base та sub / похідний мають однакові імена для членів, і ми хочемо отримати доступ до членів суперкласу, тоді ми використовуємо ключове слово super.
- Коли ми хочемо отримати доступ до конструктора суперкласу з підкласу, тоді ми використовуємо ключове слово super для виклику ключового слова superclass.

На наведеному малюнку ми показали структуру успадкування. У базовому, а також похідному класі ми маємо String змінну myStr. У похідномуClass ми маємо функцію printStr (). У цьому методі ми використовували ключове слово „super” для доступу до змінної myStr з базового класу.
На малюнку ми показали стрілки, що вказують на змінну елемента базового класу та похідну змінну класу.
Тепер давайте подивимося приклади програмування використання ключового слова super для доступу до різних членів суперкласу.
# 1) Доступ до змінної члена суперкласу
Наступна програма Java демонструє використання ключового слова „super“ для доступу до змінних базового класу.
class Baseclass { String myStr; } class Subclass extends Baseclass { String myStr; public void printdetails() //Baseclass and Subclass have variables with same name { super.myStr = 'Super'; //refers to parent class member myStr = 'Sub'; System.out.println('Superclass myStr :' + super.myStr+' and Subclass myStr:'+myStr); } } class Main{ public static void main(String() args) { Subclass cobj = new Subclass(); cobj. printdetails (); } } Вихід:

Наведена вище програма показує, як отримати доступ до змінних-членів базового класу з похідного класу, коли змінні-члени оголошені з однаковим іменем як у базовому, так і в похідному класі.
Тут ми маємо змінну myStr, яка оголошена в базовому, а також похідному класі. У методі printdetails ми посилаємось на змінну myStr базового класу за допомогою “super.myStr”, тоді як до похідної змінної класу myStr звертаються безпосередньо без будь-якого кваліфікатора.
# 2) Доступ до методу суперкласу
Далі ми побачимо, як викликати метод базового класу, коли метод у базовому класі та метод у похідному класі мають однакові імена.
Наступна програма це демонструє.
class Parent { String myStr; public void print() //parent class method { myStr = 'Parent class myStr'; System.out.println(myStr); } } class Child extends Parent { String myStr; public void print() //child class method with same name as parent { super.print(); //call Parent class print() method myStr = 'Child class myStr'; System.out.println(myStr); } } class Main{ public static void main(String() args) { Child c_obj = new Child(); c_obj.print (); } } Вихід:

Як запустити файли .jar у Windows - -
# 3) Доступ до конструктора суперкласу
Коли ми успадковуємо один клас від іншого, зверніть увагу, що конструктори не успадковуються.
Якщо ми хочемо виконати будь-які інструкції з конструкторів суперкласу перед виконанням конструктора похідного класу, тоді ми також можемо викликати конструктор суперкласу, використовуючи ключове слово super.
Для виклику конструктора суперкласу ми використовуємо виклик методу.
супер (список параметрів…)
Наступний метод демонструє доступ до суперконструкторів на Java.
class Parent { String myStr; public Parent(String name) //base class constructor { myStr = name; } } class Child extends Parent { String myStr; public Child(String name1, String name2) { super(name1); //call base class constructor and pass argument value this.myStr = name2; } public void printDetails() //print details of both constructors { System.out.println('From base class constructor: ' +super.myStr); System.out.println('From derived class constructor: ' + myStr); } } class Main{ public static void main(String() args) { Child cobj = new Child('Super constructor string','Child constructor string'); cobj.printDetails(); } }Вихід:

Як ми бачимо з наведеної програми, ми викликали конструктор суперкласу з похідного конструктора класу. Зверніть увагу, що за домовленістю, коли ми хочемо отримати доступ до конструктора суперкласу, це має бути першим твердженням у конструкторі похідного класу.
Оскільки базовий клас має параметризований конструктор, ми також передаємо відповідний параметр супервиклику під час виклику конструктора.
Якщо немає явного виклику до конструктора super, як зазначено вище, тоді компілятор завжди автоматично додає неявний виклик до super (). Але зауважте, що це буде виклик конструктора за замовчуванням суперкласу.
Часті запитання
Q # 1) Що таке успадкування в Java?
Відповідь: Процес, за допомогою якого один клас набуває властивостей і поведінки іншого класу, називається успадкуванням. У Java один клас успадковується іншим класом за допомогою ключового слова „extends”.
Спадщина сприяє повторному використанню коду, оскільки шляхом успадкування ми можемо отримувати та використовувати вже існуючі властивості та поведінку успадкованого класу без необхідності писати дублікат коду.
Q # 2) Чому у Java використовується спадщина?
Відповідь: Спадщина в основному використовується для поліпшення можливості повторного використання програми. Використовуючи спадщину, ми можемо використовувати готові класи в нашому додатку. Нам не потрібно писати наш код, якщо ми готові до функціональних можливостей.
Друге використання успадкування полягає у перевизначенні методу. Для реалізації поліморфізму виконання ми використовуємо спадщину.
Запитання №3) Які переваги успадкування?
Відповідь: Багаторазове використання - ключова перевага успадкування. Спільне використання коду через успадкування також призводить до кращої читабельності та кращої організації коду.
Ми також можемо досягти поліморфізму виконання під час заміни методу за допомогою успадкування.
Q # 4) Які особливості спадкування?
Відповідь: Будь-яка характеристика чи ознака, набута у старшого покоління, передається у спадок. Наприклад, риса світла, яка зустрічається у багатьох сім'ях, є прикладом успадкування.
З точки зору програмування, успадкування надає функцію багаторазового використання та перевизначення методу.
Q # 5) Чи необхідний супер ()?
Відповідь: Ні. Тому що якщо ми не називаємо super (), компілятор робить це неявно для нас. Але тоді неявне виклик super () є конструктором базового класу за замовчуванням. Отже, якщо нам потрібен параметризований конструктор з базового класу, тоді ми повинні викликати його явно.
Висновок
У цьому навчальному посібнику ми представили концепцію успадкування в Java. Спадкування - це процес набуття властивостей і поведінки одного класу в іншому класі. Тут ми обговорили основне визначення та термінологію, яку ми використовуємо у спадкуванні.
Ми також обговорили взаємозв'язки Is-A та Has-A в Java. Спадщина використовується для реалізації відносин Is-A.
Потім ми обговорили ключові слова „extends” та „super” у Java, які використовуються у зв’язку з успадкуванням. Extends використовується для реалізації успадкування. Ключове слово super використовується для посилання на конструктор базового класу, метод або змінну з похідного класу.
=> Ознайомтесь з Ідеальним посібником з навчання Java тут.
Рекомендована література
- Підручник з класу сканера Java із прикладами
- Що таке Java Java | Підручник з класу Java Vector з прикладами
- Java Enum: Підручник з перелічення Java з прикладами
- Довжина рядка Java () Метод із прикладами
- Підручник з Java Float із прикладами програмування
- Спадщина в C ++
- Типи успадкування в C ++
- Концепції ООП Python (класи, об'єкти та спадкування Python)