У овом упутству ћемо научити о наслеђивању Јава и њеним типовима уз помоћ примера.
Наслеђивање је једна од кључних карактеристика ООП-а која нам омогућава да од постојеће класе створимо нову класу.
Нова класа која се креира позната је као подкласа (подређена или изведена класа), а постојећа класа одакле је изведена подређена класа позната је као суперкласа (родитељска или основна класа).
Кључна extends
реч се користи за наслеђивање у Јави. На пример,
class Animal ( // methods and fields ) // use of extends keyword // to perform inheritance class Dog extends Animal ( // methods and fields of Animal // methods and fields of Dog )
У горњем примеру, класа Дог креира се наслеђивањем метода и поља из класе Анимал.
Овде је пас подкласа, а животиња суперкласа.
Пример 1: Наслеђивање Јава
class Animal ( // field and method of the parent class String name; public void eat() ( System.out.println("I can eat"); ) ) // inherit from Animal class Dog extends Animal ( // new method in subclass public void display() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access field of superclass labrador.name = "Rohu"; labrador.display(); // call method of superclass // using object of subclass labrador.eat(); ) )
Оутпут
Зовем се Роху, могу да једем
У горњем примеру извели смо поткласу Пас од суперкласе Анимал. Обратите пажњу на изјаве,
labrador.name = "Rohu"; labrador.eat();
Овде је лабрадор предмет пса. Међутим, именујте и eat()
чланови су класе Животиње.
Будући да Пас наслеђује поље и методу од Анимал, могли смо да приступимо пољу и методи користећи објекат пса.

је-однос
У Јави је наслеђивање однос ис-а- односа. Односно, наследство користимо само ако постоји однос између две класе. На пример,
- Ауто је возило
- Наранџа је воће
- Хирург је доктор
- Пас је животиња
Овде аутомобил може наследити од возила , наранџасти од воћа итд.
Надјачавање метода у наслеђивању Јава
У примеру 1 видимо да објекат поткласе може да приступи методи суперкласе.
Међутим, ако је иста метода присутна и у суперкласи и у подкласи, шта ће се догодити?
У овом случају, метода у поткласи поништава методу у суперкласи. Овај концепт је познат као надјачавање метода у Јави.
Пример 2: Замена методе у наслеђивању Јава
class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )
Оутпут
Једем псећу храну на коју могу да лајем
У горњем примеру, eat()
метода је присутна и у суперкласи Анимал и у подкласи Дог.
Овде смо креирали објектни лабрадор од пса.
Сада када зовемо eat()
помоћу објекта лабрадор, зове се метода унутар Дог. То је зато што метода унутар изведене класе надјачава методу унутар основне класе.
То се назива надјачавање методе. Да бисте сазнали више, посетите Замена Јава методе.
Напомена : Користили смо @Override
напомену да бисмо компајлеру рекли да замењујемо методу. Међутим, напомена није обавезна. Да бисте сазнали више, посетите Јава Аннотатионс.
супер кључна реч у наслеђивању Јава
Раније смо видели да иста метода у подкласи надјачава методу у суперкласи.
In such a situation, the super
keyword is used to call the method of the parent class from the method of the child class.
Example 3: super Keyword in Inheritance
class Animal ( // method in the superclass public void eat() ( System.out.println("I can eat"); ) ) // Dog inherits Animal class Dog extends Animal ( // overriding the eat() method @Override public void eat() ( // call method of superclass super.eat(); System.out.println("I eat dog food"); ) // new method in subclass public void bark() ( System.out.println("I can bark"); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // call the eat() method labrador.eat(); labrador.bark(); ) )
Output
I can eat I eat dog food I can bark
In the above example, the eat()
method is present in both the base class Animal and the derived class Dog. Notice the statement,
super.eat();
Here, the super
keyword is used to call the eat()
method present in the superclass.
We can also use the super
keyword to call the constructor of the superclass from the constructor of the subclass. To learn more, visit Java super keyword.
protected Members in Inheritance
In Java, if a class includes protected
fields and methods, then these fields and methods are accessible from the subclass of the class.
Example 4: protected Members in Inheritance
class Animal ( protected String name; protected void display() ( System.out.println("I am an animal."); ) ) class Dog extends Animal ( public void getInfo() ( System.out.println("My name is " + name); ) ) class Main ( public static void main(String() args) ( // create an object of the subclass Dog labrador = new Dog(); // access protected field and method // using the object of subclass labrador.name = "Rocky"; labrador.display(); labrador.getInfo(); ) )
Output
I am an animal. My name is Rocky
In the above example, we have created a class named Animal. The class includes a protected field: name and a method: display()
.
We have inherited the Dog class inherits Animal. Notice the statement,
labrador.name = "Rocky"; labrador.display();
Here, we are able to access the protected field and method of the superclass using the labrador object of the subclass.
Why use inheritance?
- The most important use of inheritance in Java is code reusability. The code that is present in the parent class can be directly used by the child class.
- Method overriding is also known as runtime polymorphism. Hence, we can achieve Polymorphism in Java with the help of inheritance.
Types of inheritance
There are five types of inheritance.
1. Single Inheritance
У појединачном наслеђивању, једна поткласа се протеже од једне суперкласе. На пример,

2. Вишеразинско наслеђивање
У наслеђивању на више нивоа, поткласа се протеже од суперкласе и тада иста подкласа делује као суперкласа за другу класу. На пример,

3. Хијерархијско наслеђивање
У хијерархијском наслеђивању, више поткласа се протеже од једне суперкласе. На пример,

4. Вишеструко наслеђивање
У вишеструком наслеђивању, једна поткласа се протеже од више суперкласа. На пример,

Напомена : Јава не подржава вишеструко наслеђивање. Међутим, можемо постићи вишеструко наслеђивање помоћу интерфејса. Да бисте сазнали више, посетите Јава имплементира вишеструко наслеђивање.
5. Хибридно наслеђивање
Хибридно наслеђивање је комбинација две или више врста наследства. На пример,

Овде смо комбиновали хијерархијско и вишеструко наследство да бисмо формирали хибридно наследство.