Τι είναι η κληρονομικότητα;
Η κληρονομικότητα είναι ένας μηχανισμός στον οποίο μια τάξη αποκτά την ιδιοκτησία μιας άλλης τάξης. Για παράδειγμα, ένα παιδί κληρονομεί τα χαρακτηριστικά των γονιών του. Με την κληρονομιά, μπορούμε να επαναχρησιμοποιήσουμε τα πεδία και τις μεθόδους της υπάρχουσας τάξης. Ως εκ τούτου, η κληρονομιά διευκολύνει την επαναχρησιμοποίηση και είναι μια σημαντική έννοια των OOPs.
Σε αυτό το σεμινάριο, θα μάθετε-
- Τύποι κληρονομικότητας
- Κληρονομικότητα στην Ιάβα
- Παράδειγμα κληρονομικότητας Java
- Σούπερ λέξη-κλειδί
- Μάθετε κληρονομικότητα στα OOP's με Παράδειγμα
Τύποι κληρονομικότητας
Υπάρχουν διάφορα είδη κληρονομιάς στην Java:
Ενιαία κληρονομικότητα:
Στην Ενιαία Κληρονομιά μια τάξη επεκτείνει μια άλλη τάξη (μόνο μία τάξη).
Στο παραπάνω διάγραμμα, η κλάση Β επεκτείνεται μόνο στην κατηγορία Α. Η κλάση Α είναι σούπερ τάξη και η κλάση Β είναι υποκατηγορία.
Πολλαπλή κληρονομικότητα:
Στην Πολλαπλή Κληρονομικότητα, μία τάξη εκτείνεται σε περισσότερες από μία τάξεις. Η Java δεν υποστηρίζει πολλαπλή κληρονομιά.
Σύμφωνα με το παραπάνω διάγραμμα, η Κλάση Γ επεκτείνει την Κλάση Α και την Κλάση Β και τα δύο.
Πολυεπίπεδη κληρονομικότητα:
Στην Πολυεπίπεδη κληρονομιά, μια τάξη μπορεί να κληρονομήσει από μια παράγωγη τάξη. Ως εκ τούτου, η παράγωγη τάξη γίνεται η βασική κατηγορία για τη νέα τάξη.
Όπως φαίνεται στο διάγραμμα, η κλάση Γ είναι υποκατηγορία του Β και το Β είναι α της υποκατηγορίας κλάσης Α.
Ιεραρχική κληρονομικότητα:
Στην Ιεραρχική Κληρονομικότητα, μια τάξη κληρονομείται από πολλές υποκατηγορίες.
Σύμφωνα με το παραπάνω παράδειγμα, οι κατηγορίες B, C και D κληρονομούν την ίδια κατηγορία A.
Υβριδική κληρονομικότητα:
Η υβριδική κληρονομιά είναι ένας συνδυασμός μίας και πολλαπλής κληρονομιάς.
Σύμφωνα με το παραπάνω παράδειγμα, όλο το κοινό και τα προστατευόμενα μέλη της Κλάσης Α κληρονομούνται στην Κλάση Δ, πρώτα μέσω της Κατηγορίας Β και δεύτερον μέσω της Κατηγορίας Γ
Σημείωση: Η Java δεν υποστηρίζει υβριδική / Πολλαπλή κληρονομικότητα
Κληρονομικότητα στην Ιάβα
Το JAVA INHERITANCE είναι ένας μηχανισμός στον οποίο μια τάξη αποκτά την ιδιοκτησία μιας άλλης κατηγορίας. Στην Java, όταν υπάρχει σχέση "Is-A" μεταξύ δύο τάξεων, χρησιμοποιούμε το Inheritance. Η γονική τάξη ονομάζεται σούπερ τάξη και η κληρονομική τάξη ονομάζεται υποκατηγορία. Η λέξη-κλειδί
extends
χρησιμοποιείται από την υποκατηγορία για να κληρονομήσει τα χαρακτηριστικά της super class.
Η κληρονομικότητα είναι σημαντική αφού οδηγεί στην επαναχρησιμοποίηση του κώδικα.
Σύνταξη Java Inheritance:
class subClass extends superClass{//methods and fields}
Παράδειγμα κληρονομικότητας Java
class Doctor {void Doctor_Details() {System.out.println("Doctor Details… ");}}class Surgeon extends Doctor {void Surgeon_Details() {System.out.println("Surgen Detail… ");}}public class Hospital {public static void main(String args[]) {Surgeon s = new Surgeon();s.Doctor_Details();s.Surgeon_Details();}}
Σούπερ λέξη-κλειδί
Η σούπερ λέξη-κλειδί είναι παρόμοια με τη λέξη-κλειδί "αυτό".
Η λέξη-κλειδί super μπορεί να χρησιμοποιηθεί για πρόσβαση σε οποιοδήποτε μέλος δεδομένων ή μεθόδους της γονικής τάξης.
Η σούπερ λέξη-κλειδί μπορεί να χρησιμοποιηθεί σε επίπεδο μεταβλητής, μεθόδου και κατασκευαστή.
Σύνταξη:
super.();
Μάθετε κληρονομικότητα στα OOP's με Παράδειγμα
Εξετάστε την ίδια τραπεζική εφαρμογή από το προηγούμενο παράδειγμα.
Υποτίθεται ότι ανοίγουμε δύο διαφορετικούς τύπους λογαριασμών, έναν για αποθήκευση και έναν άλλο για έλεγχο (επίσης γνωστός ως τρέχων).
Ας συγκρίνουμε και να μελετήσουμε πώς μπορούμε να προσεγγίσουμε την κωδικοποίηση από μια δομημένη και αντικειμενοστραφή προοπτική προγραμματισμού. Δομική προσέγγιση : Σε δομημένο προγραμματισμό, θα δημιουργήσουμε δύο λειτουργίες -
- Ένας για απόσυρση
- Και το άλλο για δράση κατάθεσης.
Δεδομένου ότι η λειτουργία αυτών των λειτουργιών παραμένει ίδια στους λογαριασμούς.
Η προσέγγιση του OOP : Κατά τη χρήση της προσέγγισης προγραμματισμού OOP . Θα δημιουργήσουμε δύο τάξεις.
- Ο καθένας έχει εφαρμογή των καταθέσεων και ανάληψης λειτουργιών.
- Αυτό θα απολύσει επιπλέον εργασία.
Αλλαγή αιτήματος στο λογισμικό
Τώρα υπάρχει μια αλλαγή στην προδιαγραφή απαίτησης για κάτι που είναι τόσο κοινό στη βιομηχανία λογισμικού. Θα πρέπει να προσθέσετε προνομιακό λειτουργικό τραπεζικό λογαριασμό με δυνατότητα υπερανάληψης. Για φόντο, η υπερανάληψη είναι μια διευκόλυνση στην οποία μπορείτε να αποσύρετε ένα ποσό περισσότερο από το διαθέσιμο υπόλοιπο στον λογαριασμό σας.
Διαρθρωτική προσέγγιση: Χρησιμοποιώντας τη λειτουργική προσέγγιση, πρέπει να τροποποιήσω τη λειτουργία απόσυρσης, η οποία είναι ήδη δοκιμασμένη και βασική. Και προσθέστε μια μέθοδο όπως παρακάτω θα φροντίσει για νέες απαιτήσεις.
Η προσέγγιση του OOP: Χρησιμοποιώντας την προσέγγιση του OOP, απλά πρέπει να γράψετε μια νέα τάξη με μοναδική εφαρμογή της λειτουργίας απόσυρσης. Ποτέ δεν αγγίξαμε το δοκιμασμένο κομμάτι κώδικα.
Ένα άλλο αίτημα αλλαγής
Τι γίνεται αν η απαίτηση αλλάξει περαιτέρω; Θέλετε να προσθέσετε λογαριασμό πιστωτικής κάρτας με τη δική του μοναδική απαίτηση καταθέσεων .
Διαρθρωτική προσέγγιση: Χρησιμοποιώντας τη δομική προσέγγιση, πρέπει να αλλάξετε ξανά το δοκιμασμένο κομμάτι του κωδικού κατάθεσης.
Η προσέγγιση του OOP : Αλλά χρησιμοποιώντας την αντικειμενοστρεφή προσέγγιση, θα δημιουργήσετε μια νέα τάξη με τη μοναδική εφαρμογή της μεθόδου κατάθεσης (επισημαίνεται με κόκκινο χρώμα στην παρακάτω εικόνα).
Έτσι, παρόλο που ο διαρθρωτικός προγραμματισμός φαίνεται σαν μια εύκολη προσέγγιση αρχικά, ο OOP κερδίζει μακροπρόθεσμα.
Πλεονέκτημα της κληρονομικότητας στα OOP
Αλλά κάποιος μπορεί να υποστηρίζει ότι σε όλες τις τάξεις, έχετε επαναλαμβανόμενα κομμάτια κώδικα.
Για να το ξεπεράσετε, δημιουργείτε μια μητρική τάξη, πείτε "λογαριασμός" και εφαρμόστε την ίδια λειτουργία κατάθεσης και ανάληψης. Και κάντε τα παιδικά μαθήματα κληρονομικά "λογαριασμό" τάξη. Για να έχουν πρόσβαση σε λειτουργίες ανάληψης και κατάθεσης στην κατηγορία λογαριασμού.
Οι συναρτήσεις δεν απαιτείται να εφαρμοστούν μεμονωμένα. Αυτό είναι κληρονομικότητα στην Ιάβα. .