Dědičnost Java (s příklady)

V tomto tutoriálu se pomocí příkladu dozvíme o dědičnosti Java a jejích typech.

Dědičnost je jednou z klíčových funkcí OOP, která nám umožňuje vytvořit novou třídu ze stávající třídy.

Nová třída, která je vytvořena, je známá jako podtřída (podřízená nebo odvozená třída) a stávající třída, ze které je odvozena podřízená třída, je známá jako nadtřída (nadřazená nebo základní třída).

extendsKlíčové slovo se používá k provádění dědičnost v Javě. Například,

 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 )

Ve výše uvedeném příkladu je třída Dog vytvořena zděděním metod a polí ze třídy Animal.

Zde je podtřída pes a nadtřída zvíře.

Příklad 1: Dědičnost Java

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

Výstup

 Jmenuji se Rohu, mohu jíst

Ve výše uvedeném příkladu jsme odvodili podtřídu Dog od nadtřídy Animal. Všimněte si prohlášení,

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

Zde je labrador předmětem psa. Jmenujte se a eat()jsou však členy třídy Animal.

Jelikož Pes zdědí pole a metodu od zvířete, jsme schopni získat přístup k poli a metodě pomocí objektu Psa.

Implementace Java Inheritance

je-vztah

V Javě je dědičnost vztahem is-a . To znamená, že dědičnost používáme pouze v případě, že existuje vztah mezi dvěma třídami. Například,

  • Auto je vozidlo
  • Oranžová je ovoce
  • Chirurg je lékař
  • Pes je zvíře

Zde může auto zdědit z vozidla , Orange může zdědit z ovoce atd.

Přepsání metody v dědičnosti Java

V příkladu 1 vidíme, že objekt podtřídy může přistupovat k metodě nadtřídy.

Pokud je však stejná metoda přítomna v nadtřídě i podtřídě, co se stane?

V tomto případě metoda v podtřídě přepíše metodu v nadtřídě. Tento koncept se v Javě označuje jako metoda přepsání.

Příklad 2: Přepsání metody v Java 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() ( 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(); ) )

Výstup

 Jím krmivo pro psy, mohu štěkat

Ve výše uvedeném příkladu je eat()metoda přítomna jak v nadtřídě Animal, tak v podtřídě Dog.

Zde jsme vytvořili objekt labradora psa.

Nyní, když voláme eat()pomocí objektu labrador, je volána metoda uvnitř Dog. Důvodem je, že metoda uvnitř odvozené třídy přepíše metodu uvnitř základní třídy.

Tomu se říká přepsání metody. Chcete-li se dozvědět více, navštivte Java Method Overriding.

Poznámka : Použili jsme @Overrideanotaci, abychom kompilátoru řekli, že přepisujeme metodu. Anotace však není povinná. Další informace najdete v anotacích Java.

super klíčové slovo v dědičnosti Java

Dříve jsme viděli, že stejná metoda v podtřídě přepíše metodu v nadtřídě.

V takové situaci se superklíčové slovo používá k volání metody nadřazené třídy z metody podřízené třídy.

Příklad 3: super klíčové slovo v dědičnosti

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

Výstup

 Můžu jíst Jím psí jídlo, mohu štěkat 

Ve výše uvedeném příkladu je eat()metoda přítomna jak v základní třídě Animal, tak v odvozené třídě Dog. Všimněte si prohlášení,

 super.eat();

Zde se superklíčové slovo používá k volání eat()metody přítomné v nadtřídě.

superKlíčové slovo můžeme také použít k volání konstruktoru nadtřídy z konstruktoru podtřídy. Chcete-li se dozvědět více, navštivte super klíčové slovo Java .

chránění členové v dědictví

Pokud v Javě třída zahrnuje protectedpole a metody, jsou tato pole a metody přístupné z podtřídy třídy.

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

V jediné dědičnosti vychází jedna podtřída z jedné nadtřídy. Například,

Jednotná dědičnost Java

2. Víceúrovňová dědičnost

Ve víceúrovňové dědičnosti podtřída vychází z nadtřídy a potom stejná podtřída funguje jako nadtřída pro jinou třídu. Například,

Víceúrovňová dědičnost Java

3. Hierarchická dědičnost

V hierarchické dědičnosti vychází více podtříd z jedné nadtřídy. Například,

Java hierarchická dědičnost

4. Vícenásobné dědictví

Ve vícenásobné dědičnosti vychází jedna podtřída z více nadtříd. Například,

Java Multiple Inheritance

Poznámka : Java nepodporuje vícenásobné dědění. Můžeme však dosáhnout více dědičnosti pomocí rozhraní. Chcete-li se dozvědět více, navštivte stránku Java implementuje více dědičností.

5. Hybridní dědičnost

Hybridní dědičnost je kombinací dvou nebo více typů dědičnosti. Například,

Hybridní dědičnost Java

Zde jsme kombinovali hierarchickou a vícenásobnou dědičnost, abychom vytvořili hybridní dědičnost.

Zajímavé články...