Κληρονομικότητα Java (με παραδείγματα)

Σε αυτό το σεμινάριο, θα μάθουμε για την κληρονομιά Java και τους τύπους της με τη βοήθεια του παραδείγματος.

Το κληρονομικό είναι ένα από τα βασικά χαρακτηριστικά του OOP που μας επιτρέπει να δημιουργήσουμε μια νέα τάξη από μια υπάρχουσα τάξη.

Η νέα κλάση που δημιουργείται είναι γνωστή ως υποκατηγορία ( κλάση θυγατρικού ή παράγωγου) και η υπάρχουσα τάξη από την οποία προέρχεται η θυγατρική τάξη είναι γνωστή ως superclass (γονική ή βασική τάξη).

Η extendsλέξη-κλειδί χρησιμοποιείται για την εκτέλεση κληρονομιάς στην Java. Για παράδειγμα,

 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 )

Στο παραπάνω παράδειγμα, η κλάση σκυλιών δημιουργείται κληρονομούμε τις μεθόδους και τα πεδία από την κατηγορία ζώων.

Εδώ, το Dog είναι η υποκατηγορία και το Animal είναι το superclass.

Παράδειγμα 1: Κληρονομικότητα 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(); ) )

Παραγωγή

 Το όνομά μου είναι Rohu μπορώ να φάω

Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει ένα σκύλο υποκατηγορίας από το superclass Animal. Παρατηρήστε τις δηλώσεις,

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

Εδώ, το λαμπραντόρ είναι ένα αντικείμενο του σκύλου. Ωστόσο, το όνομα και eat()είναι τα μέλη της τάξης των ζώων.

Δεδομένου ότι ο σκύλος κληρονομεί το πεδίο και τη μέθοδο από το Animal, είμαστε σε θέση να αποκτήσουμε πρόσβαση στο πεδίο και τη μέθοδο χρησιμοποιώντας το αντικείμενο του σκύλου.

Εφαρμογή Java Inheritance

είναι-μια σχέση

Στην Java, η κληρονομιά είναι μια σχέση. Δηλαδή, χρησιμοποιούμε κληρονομιά μόνο εάν υπάρχει σχέση μεταξύ δύο τάξεων. Για παράδειγμα,

  • Το αυτοκίνητο είναι όχημα
  • Το πορτοκάλι είναι ένα φρούτο
  • Ο Χειρουργός είναι γιατρός
  • Ο σκύλος είναι ένα ζώο

Εδώ, το αυτοκίνητο μπορεί να κληρονομήσει από το όχημα , το πορτοκαλί μπορεί να κληρονομήσει από τα φρούτα και ούτω καθεξής.

Μέθοδος Παράκαμψη στο Java Κληρονομικότητα

Στο Παράδειγμα 1 , βλέπουμε ότι το αντικείμενο της υποκατηγορίας μπορεί να έχει πρόσβαση στη μέθοδο του superclass.

Ωστόσο, εάν υπάρχει η ίδια μέθοδος τόσο στο superclass όσο και στην υποκατηγορία, τι θα συμβεί;

Σε αυτήν την περίπτωση, η μέθοδος στην υποκατηγορία υπερισχύει της μεθόδου στο superclass. Αυτή η ιδέα είναι γνωστή ως μέθοδος υπέρβασης στην Java.

Παράδειγμα 2: Παράκαμψη μεθόδου στο 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(); ) )

Παραγωγή

 Τρώω τροφή για σκύλους που μπορώ να γαβγίσω

Στο παραπάνω παράδειγμα, η eat()μέθοδος υπάρχει τόσο στο Superclass Animal όσο και στην υποκατηγορία Dog.

Εδώ, δημιουργήσαμε ένα αντικείμενο λαμπραντόρ του Dog.

Τώρα όταν καλούμε eat()χρησιμοποιώντας το αντικείμενο labrador, καλείται η μέθοδος στο Dog. Αυτό συμβαίνει επειδή η μέθοδος εντός της παραγόμενης κλάσης παρακάμπτει τη μέθοδο εντός της βασικής κλάσης.

Αυτό ονομάζεται παράκαμψη μεθόδου. Για να μάθετε περισσότερα, επισκεφθείτε την παράκαμψη μεθόδου Java.

Σημείωση : Χρησιμοποιήσαμε τον @Overrideσχολιασμό για να πούμε στον μεταγλωττιστή ότι παρακάμπτουμε μια μέθοδο. Ωστόσο, ο σχολιασμός δεν είναι υποχρεωτικός. Για να μάθετε περισσότερα, επισκεφτείτε το Java Annotations.

σούπερ λέξη-κλειδί στην κληρονομιά Java

Προηγουμένως είδαμε ότι η ίδια μέθοδος στην υποκατηγορία υπερισχύει της μεθόδου σε superclass.

Σε μια τέτοια περίπτωση, η superλέξη-κλειδί χρησιμοποιείται για να καλέσει τη μέθοδο της γονικής τάξης από τη μέθοδο της παιδικής τάξης.

Παράδειγμα 3: σούπερ λέξη-κλειδί στην κληρονομικότητα

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

Παραγωγή

 Μπορώ να φάω, τρώω τροφή για σκύλους που μπορώ να φλοιώ 

Στο παραπάνω παράδειγμα, η eat()μέθοδος υπάρχει τόσο στη βασική κατηγορία Animal όσο και στην παράγωγη κατηγορία Dog. Παρατηρήστε τη δήλωση,

 super.eat();

Εδώ, η superλέξη-κλειδί χρησιμοποιείται για να καλέσει τη eat()μέθοδο που υπάρχει στο superclass.

Μπορούμε επίσης να χρησιμοποιήσουμε τη superλέξη-κλειδί για να καλέσουμε τον κατασκευαστή του superclass από τον κατασκευαστή της υποκατηγορίας. Για να μάθετε περισσότερα, επισκεφτείτε την υπερ-λέξη-κλειδί Java .

προστατευόμενα Μέλη στο Κληρονομικό

Στην Java, εάν μια κλάση περιλαμβάνει protectedπεδία και μεθόδους, τότε αυτά τα πεδία και οι μέθοδοι είναι προσβάσιμα από την υποκατηγορία της κλάσης.

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

Σε μια μοναδική κληρονομιά, μια μεμονωμένη υποκατηγορία εκτείνεται από ένα μόνο superclass. Για παράδειγμα,

Ενιαία κληρονομικότητα Java

2. Πολυεπίπεδη κληρονομικότητα

Στην πολυεπίπεδη κληρονομιά, μια υποκατηγορία εκτείνεται από ένα superclass και στη συνέχεια η ίδια υποκατηγορία λειτουργεί ως superclass για μια άλλη κατηγορία. Για παράδειγμα,

Πολυεπίπεδη κληρονομικότητα Java

3. Ιεραρχική κληρονομικότητα

Στην ιεραρχική κληρονομιά, πολλές υποκατηγορίες εκτείνονται από ένα μόνο superclass. Για παράδειγμα,

Ιεραρχική κληρονομικότητα Java

4. Πολλαπλή κληρονομικότητα

Σε πολλαπλή κληρονομιά, μια μεμονωμένη υποκατηγορία εκτείνεται από πολλαπλά σούπερ γυαλιά. Για παράδειγμα,

Πολλαπλή κληρονομικότητα Java

Σημείωση : Η Java δεν υποστηρίζει πολλαπλή κληρονομιά. Ωστόσο, μπορούμε να επιτύχουμε πολλαπλή κληρονομιά χρησιμοποιώντας διεπαφές. Για να μάθετε περισσότερα, η επίσκεψη Java εφαρμόζει πολλαπλή κληρονομιά.

5. Υβριδική κληρονομικότητα

Η υβριδική κληρονομιά είναι ένας συνδυασμός δύο ή περισσότερων τύπων κληρονομιάς. Για παράδειγμα,

Υβριδική κληρονομικότητα Java

Εδώ, έχουμε συνδυάσει ιεραρχική και πολλαπλή κληρονομιά για να σχηματίσουμε μια υβριδική κληρονομιά.

ενδιαφέροντα άρθρα...