„Java“ paveldėjimas (su pavyzdžiais)

Šioje pamokoje pavyzdžio pagalba sužinosime apie „Java“ paveldėjimą ir jo tipus.

Paveldėjimas yra viena iš pagrindinių OOP savybių, leidžiančių mums sukurti naują klasę iš esamos klasės.

Sukurta nauja klasė yra vadinama poklasiu (vaikiška arba išvestinė klasė), o esama klasė, iš kurios kilusi vaiko klasė, vadinama superklasė (tėvų arba pagrindinė klasė).

extendsRaktažodis naudojamas atlikti palikimą Java. Pavyzdžiui,

 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 )

Ankstesniame pavyzdyje šunų klasė sukurta paveldint metodus ir laukus iš gyvūnų klasės.

Čia šuo yra poklasis, o gyvūnas - superklasė.

1 pavyzdys: „Java“ paveldėjimas

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

Rezultatas

 Mano vardas Rohu, aš galiu valgyti

Ankstesniame pavyzdyje mes gavome poklasio šunį iš superklasės „Animal“. Atkreipkite dėmesį į teiginius,

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

Čia labradoras yra Šuns objektas. Tačiau įvardykite ir eat()būkite gyvūnų klasės nariai.

Kadangi Šuo paveldi lauką ir metodą iš „Animal“, mes galime pasiekti lauką ir metodą naudodami Šuns objektą.

„Java“ paveldėjimo įgyvendinimas

yra-santykiai

Java, paveldėjimo yra yra A santykiai. Tai reiškia, kad paveldėjimą naudojame tik tuo atveju, jei egzistuoja ryšys tarp dviejų klasių. Pavyzdžiui,

  • Automobilis yra transporto priemonė
  • Apelsinas yra vaisius
  • Chirurgas yra gydytojas
  • Šuo yra gyvūnas

Čia automobilis gali paveldėti iš transporto priemonės , oranžinis -vaisių ir pan.

Metodas, viršijantis „Java“ paveldėjimą

1 pavyzdyje matome, kad poklasio objektas gali pasiekti superklasės metodą.

Tačiau jei tas pats metodas yra ir superklasėje, ir poklasyje, kas nutiks?

Šiuo atveju poklasyje esantis metodas viršija metodą, esantį superklasėje. Ši koncepcija vadinama „Java“ svarbesniu metodu.

2 pavyzdys: „Java“ paveldėjimo svarbesnis metodas

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

Rezultatas

 Valgau šunų maistą, galiu loti

Ankstesniame pavyzdyje eat()metodas yra ir superklasės Gyvūnas, ir poklasis Šuo.

Čia mes sukūrėme objektą Šuns labradoras.

Kai mes skambiname eat()naudodami objektą labradoru, vadinamas „Šuns“ metodas. Taip yra todėl, kad išvestinės klasės metodas pakeičia bazinės klasės metodą.

Tai vadinama metodo viršijimu. Norėdami sužinoti daugiau, apsilankykite „Java Method Overriding“.

Pastaba : @OverrideAnotaciją naudojome sakydami kompiliatoriui, kad mes viršijame metodą. Tačiau anotacija nėra privaloma. Norėdami sužinoti daugiau, apsilankykite „Java“ anotacijose.

super raktinis žodis „Java“ paveldėjime

Anksčiau matėme, kad tas pats poklasio metodas viršija metodą superklase.

Esant tokiai situacijai, superraktinis žodis naudojamas tėvų klasės metodui iškviesti iš vaikų klasės metodo.

3 pavyzdys: paveldimas super raktinis žodis

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

Rezultatas

 Galiu valgyti, valgau šunų maistą, galiu loti 

Ankstesniame pavyzdyje eat()metodas yra ir pagrindinėje gyvūnų klasėje, ir išvestinėje šunų klasėje. Atkreipkite dėmesį į pareiškimą,

 super.eat();

Čia superraktinis žodis naudojamas vadinti eat()metodą, esantį superklase.

Mes taip pat galime naudoti superraktinį žodį, kad iškviestume superklasės konstruktorių iš poklasio konstruktoriaus. Norėdami sužinoti daugiau, apsilankykite „Java super keyword“ .

saugomi paveldėtojo nariai

Jei „Java“ klasėje yra protectedlaukai ir metodai, šie laukai ir metodai yra prieinami iš klasės poklasio.

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

Vieno paveldėjimo atveju vienas poklasis tęsiasi iš vienos superklasės. Pavyzdžiui,

„Java“ pavienis paveldėjimas

2. Daugiapakopis paveldėjimas

Daugiapakopio paveldėjimo atveju poklasis tęsiasi nuo superklasės ir tada tas pats poklasis veikia kaip kitos klasės superklase. Pavyzdžiui,

„Java“ daugiapakopis paveldėjimas

3. Hierarchinis paveldėjimas

Pagal hierarchinį paveldėjimą iš vienos superklasės tęsiasi keli poklasiai. Pavyzdžiui,

Java hierarchinis paveldėjimas

4. Daugkartinis paveldėjimas

Daugkartinio paveldėjimo atveju vienas poklasis tęsiasi iš kelių superklasių. Pavyzdžiui,

„Java“ daugybinis paveldėjimas

Pastaba : „Java“ nepalaiko kelių paveldėjimų. Tačiau naudodami sąsajas galime pasiekti daugelį paveldėjimų. Norėdami sužinoti daugiau, apsilankykite „Java“ įgyvendina kelis paveldėjimo būdus.

5. Hibridinis paveldėjimas

Hibridinis paveldėjimas yra dviejų ar daugiau paveldėjimo rūšių derinys. Pavyzdžiui,

„Java“ hibridinis paveldėjimas

Čia mes sujungėme hierarchinį ir daugkartinį paveldėjimą, kad susidarytume hibridinį paveldėjimą.

Įdomios straipsniai...