Java öröklés (példákkal)

Ebben az oktatóanyagban példa segítségével megismerhetjük a Java öröklődését és típusait.

Az öröklés az OOP egyik legfontosabb jellemzője, amely lehetővé teszi számunkra, hogy egy meglévő osztályból új osztályt hozzunk létre.

A létrehozott új osztály alosztály (gyermek vagy származtatott osztály) néven ismert, és a meglévő osztály, ahonnan a gyermek osztály származik, szuperosztály (szülő vagy alaposztály ) néven ismert .

A extendskulcsszó az öröklés végrehajtására szolgál a Java-ban. Például,

 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 )

A fenti példában a Kutya osztály a módszerek és mezők öröklésével jön létre az Animal osztályból.

Itt a Kutya az alosztály, az Állat pedig a szuperosztály.

1. példa: Java öröklődés

 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(); ) )

Kimenet

 Rohu vagyok, ehetek

A fenti példában egy alosztályú kutyát származtattunk az Animal szuperosztályból. Figyelje meg az állításokat,

 labrador.name = "Rohu"; labrador.eat();

Itt a labrador a kutya tárgya. Nevezze meg és eat()tagjai az Animal osztálynak.

Mivel a kutya a mezőt és a módszert örökölte az állattól, a kutya objektumának használatával hozzáférhetünk a mezőhöz és a módszerhez.

Java öröklődés megvalósítása

van-egy kapcsolat

A Java-ban az öröklés egy kapcsolat. Vagyis csak akkor használjuk az öröklést, ha két osztály között létezik kapcsolat. Például,

  • Az autó egy jármű
  • A narancs egy gyümölcs
  • Sebész egy orvos
  • A kutya egy állat

Itt a Car örökölhet a járműtől , az Orange a gyümölcsöktől stb.

Módszer felülírása a Java öröklésben

Az 1. példában azt látjuk, hogy az alosztály objektuma hozzáférhet a szuperosztály módszeréhez.

Ha azonban ugyanaz a módszer van jelen mind a szuperosztályban, mind az alosztályban, mi fog történni?

Ebben az esetben az alosztály módszere felülírja a szuperosztályban alkalmazott módszert. Ez a koncepció a Java-ban felülírható módszerként ismert.

2. példa: A Java öröklődésében felülírható módszer

 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(); ) )

Kimenet

 Kutyaeledelt eszem, ugatni tudok

A fenti példában a eat()módszer mind a szuperkategóriás állatban, mind az alosztály kutyájában van jelen.

Itt létrehoztunk egy kutya labrador objektumot.

Most, amikor eat()az objektumot labradorral hívjuk , a kutyán belüli módszert hívjuk meg. A levezetett osztályon belüli módszer ugyanis felülírja az alaposztályon belüli módszert.

Ezt nevezzük metódus felülbírálásnak. További információkért látogasson el a Java Method Overriding oldalra.

Megjegyzés : Az @Overrideannotációval azt mondtuk a fordítónak, hogy felülírunk egy metódust. A feljegyzés azonban nem kötelező. További információért keresse fel a Java kommentárokat.

szuper kulcsszó a Java öröklésében

Korábban azt láttuk, hogy ugyanaz az alosztálybeli módszer felülírja a módszert a szuperosztályban.

Ilyen helyzetben a superkulcsszóval hívják meg a szülő osztály módszerét a gyermek osztály módszeréből.

3. példa: szuper kulcsszó az öröklésben

 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(); ) )

Kimenet

 Ehetek eszem kutyaeledelt tudok ugatni 

A fenti példában a eat()módszer mind az állat, mind az abból származó kutya osztályban jelen van. Figyelje meg az állítást,

 super.eat();

Itt a superkulcsszóval eat()a szuperosztályban szereplő metódust hívják meg .

A superkulcsszóval felhívhatjuk a szuperosztály konstruktorát is az alosztály konstruktorából. További információkért keresse fel a Java super kulcsszót .

védett képviselők az öröklésben

Ha a Java-ban egy osztály protectedmezőket és metódusokat tartalmaz, akkor ezek a mezők és metódusok az osztály alosztályából érhetők el.

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

Egyetlen öröklés esetén egyetlen alosztály terjed ki egyetlen szuperosztályból. Például,

Java egyetlen öröklődés

2. Többszintű öröklés

A többszintű öröklésben egy alosztály kiterjed egy szuperosztályról, majd ugyanaz az alosztály szuperosztályként működik egy másik osztály számára. Például,

Java többszintű öröklés

3. Hierarchikus öröklés

A hierarchikus öröklésben több alosztály terjed ki egyetlen szuperosztályból. Például,

Java hierarchikus öröklés

4. Többszörös öröklés

Többszörös öröklés esetén egyetlen alosztály terjed ki több szuperosztályról. Például,

Java többszörös öröklődés

Megjegyzés : A Java nem támogatja a többszörös öröklést. Felületek használatával azonban több öröklést is elérhetünk. Ha többet szeretne megtudni, látogasson el a Java többszörös öröklődésre.

5. Hibrid öröklés

A hibrid öröklés két vagy több típusú öröklés kombinációja. Például,

Java hibrid öröklődés

Itt kombináltuk a hierarchikus és a többszörös öröklődést, hogy hibrid öröklődést alkossunk.

érdekes cikkek...