Dedovanje Java (z primeri)

V tej vadnici bomo s pomočjo primera spoznali dedovanje Java in njegove vrste.

Dedovanje je ena ključnih lastnosti OOP, ki nam omogoča, da iz obstoječega razreda ustvarimo nov razred.

Ustvarjeni novi razred je znan kot podrazred (podrejeni ali izpeljani razred), obstoječi razred, od koder izhaja podrejeni razred, pa je znan kot nadrazred (nadrejeni ali osnovni razred).

Ključna extendsbeseda se uporablja za dedovanje v Javi. Na primer

 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 )

V zgornjem primeru je razred Dog ustvarjen z dedovanjem metod in polj iz razreda Animal.

Tu je pes podrazred in žival nadrazred.

Primer 1: Dedovanje 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(); ) )

Izhod

 Moje ime je Rohu, lahko jem

V zgornjem primeru smo iz superklase Animal izpeljali podrazred Dog. Upoštevajte izjave,

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

Tu je labrador predmet psa. Vendar poimenujte in eat()so člani razreda Žival.

Ker Dog podeduje polje in metodo od Animal, lahko do polja in metode dostopamo z uporabo predmeta Dog.

Izvajanje dedovanja Java

je-odnos

V Javi je dedovanje odnos -je- odnos. To pomeni, da dedovanje uporabljamo le, če obstaja odnos med dvema razredoma. Na primer

  • Avto je vozilo
  • Oranžna je sadje
  • Kirurg je zdravnik
  • Pes je žival

Tu lahko Car podeduje po vozilu , Orange lahko po sadju itd.

Preglasitev metode v dedovanju Java

V primeru 1 vidimo, da lahko predmet podrazreda dostopa do metode superrazreda.

Če pa je enaka metoda prisotna tako v superrazredu kot v podrazredu, kaj se bo zgodilo?

V tem primeru metoda v podrazredu preglasi metodo v nadrazredu. Ta koncept je znan kot preglasitev metode v Javi.

Primer 2: Preglasitev metode v dedovanju Java

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

Izhod

 Jedem pasjo hrano, ki jo znam lajati

V zgornjem primeru je eat()metoda prisotna tako v superrazredu Animal kot v podrazredu Dog.

Tu smo ustvarili objektni labrador iz Psa.

Zdaj, ko pokličemo eat()z uporabo predmeta labrador, se pokliče metoda znotraj Dog. To je zato, ker metoda znotraj izvedenega razreda preglasi metodo znotraj osnovnega razreda.

To se imenuje preglasitev metode. Če želite izvedeti več, obiščite Java Overriding.

Opomba : Z @Overridepripisom smo prevajalniku povedali, da preglasujemo metodo. Vendar pripis ni obvezen. Če želite izvedeti več, obiščite Java Annotations.

super ključna beseda v dedovanju Java

Prej smo videli, da ista metoda v podrazredu preglasi metodo v superrazredu.

V takem primeru se s superključno besedo pokliče metoda nadrejenega razreda iz metode podrejenega razreda.

3. primer: super ključna beseda pri dedovanju

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

Izhod

 Lahko jem, jem pasjo hrano, ki lahko lajam 

V zgornjem primeru je eat()metoda prisotna tako v osnovnem razredu Animal kot v izpeljanem razredu Dog. Upoštevajte izjavo,

 super.eat();

Tu se superključna beseda uporablja za klicanje eat()metode, ki je prisotna v superrazredu.

superKljučno besedo lahko uporabimo tudi za klic konstruktorja superrazreda iz konstruktorja podrazreda. Če želite izvedeti več, obiščite ključno besedo Java super .

zaščiteni člani v dedovanju

Če v Javi razred vključuje protectedpolja in metode, so ta polja in metode dostopne iz podrazreda razreda.

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

Pri enkratnem dedovanju se en podrazred razširi od enega nadrazreda. Na primer

Eno dedovanje Java

2. Dedovanje na več ravneh

Pri dedovanju na več ravneh se podrazred razširi iz nadrazreda in nato isti podrazred deluje kot nadrazred za drug razred. Na primer

Java večstopenjsko dedovanje

3. Hierarhično dedovanje

Pri hierarhičnem dedovanju se več podrazredov razširi iz enega nadrazreda. Na primer

Java hierarhično dedovanje

4. Večkratno dedovanje

Pri večkratnem dedovanju se en podrazred razširi iz več nadrazredov. Na primer

Java večkratno dedovanje

Opomba : Java ne podpira večkratnega dedovanja. Vendar lahko z vmesniki dosežemo večkratno dedovanje. Če želite izvedeti več, obiščite Java, ki izvaja večkratno dedovanje.

5. Hibridno dedovanje

Hibridno dedovanje je kombinacija dveh ali več vrst dedovanja. Na primer

Java hibridno dedovanje

Tu smo združili hierarhično in večkratno dedovanje, da tvorimo hibridno dedovanje.

Zanimive Članki...