Εξερευνώντας την κληρονομικότητα στη γλώσσα προγραμματισμού Java

Εξερευνώντας την κληρονομικότητα στη γλώσσα προγραμματισμού Java

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





Ο σκοπός της κληρονομικότητας στην ανάπτυξη λογισμικού είναι να διευκολύνει την επαναχρησιμοποίηση ασφαλούς και αξιόπιστου λογισμικού. Ένα από τα σημαντικότερα οφέλη της χρήσης κληρονομικότητας είναι ότι εξαλείφει τον περιττό κώδικα στα προγράμματά σας.





itunes αλλάζουν θέση δημιουργίας αντιγράφων ασφαλείας Windows 10

Πώς λειτουργεί η κληρονομικότητα

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





Ένα πραγματικό παράδειγμα του τρόπου λειτουργίας της κληρονομικότητας θα ήταν να ληφθούν υπόψη τα φρούτα. Αυτή είναι μια ευρεία ετικέτα που χρησιμεύει για την ενσωμάτωση μιας σειράς διαφορετικών στοιχείων.

Το μήλο είναι φρούτο και το πορτοκάλι. Ωστόσο, ένα πορτοκάλι δεν είναι μήλο, οπότε δεν θα είχατε φρούτα ως ένα από τα αποθέματά σας εάν είχατε κατάστημα. Perhapsσως θα μπορούσατε να έχετε ένα τμήμα φρούτων στο απόθεμά σας και κάτω από αυτό το τμήμα, θα είχατε πιο συγκεκριμένα αντικείμενα, όπως μήλα και πορτοκάλια.



Έτσι λειτουργεί η κληρονομικότητα.

Χρήση κληρονομικότητας στην Java

Η κληρονομικότητα μπορεί να χρησιμοποιηθεί σε οποιαδήποτε γλώσσα προγραμματισμού που χρησιμοποιεί το αντικείμενο-προσανατολισμένο πρότυπο προγραμματισμού. Ωστόσο, ο ακριβής τρόπος με τον οποίο χρησιμοποιείται η κληρονομικότητα εξαρτάται από τη συγκεκριμένη γλώσσα προγραμματισμού.





Για παράδειγμα, Η C ++ είναι επίσης μια αντικειμενοστραφής γλώσσα προγραμματισμού Το Το C ++ υποστηρίζει αυτό που είναι γνωστό ως πολλαπλή κληρονομικότητα, ενώ η Java υποστηρίζει μόνο μία κληρονομικότητα.

Αυτό σημαίνει ότι στην Java μια γονική τάξη μπορεί να έχει πολλές παιδικές τάξεις, αλλά κάθε παιδική τάξη μπορεί να έχει μόνο μία τάξη γονέα (απλή κληρονομικότητα). Ωστόσο, υπάρχει ένας τρόπος για να επιτευχθεί έμμεση πολλαπλή κληρονομικότητα στην Java, δημιουργώντας μια σχέση παππού και παππού, γονέα και παιδιού.





Δημιουργία της τάξης γονέα στην Java

Η διαδικασία επιλογής μιας γονικής τάξης από ένα έγγραφο απαιτήσεων λογισμικού είναι γνωστή ως αντικειμενοστρεφής ανάλυση. Κατά τη διάρκεια αυτής της διαδικασίας η φράση είναι a χρησιμοποιείται συχνά για τον προσδιορισμό πιθανών σχέσεων κληρονομικότητας. Αντλώντας από το παραπάνω παράδειγμα μας, θα πρέπει να μπορείτε να δείτε ότι τα φρούτα θα ήταν η γονική μας τάξη.

Παράδειγμα κλάσης γονέων φρούτων


public class Fruit {
//Variable Declaration
protected String seed;
protected String skinColor;
protected String taste;
//Default Constructor
public Fruit(){
seed = '';
skinColor ='';
taste ='';
}
//Primary Constructor
public Fruit(String seed, String skinColor, String taste){
this.seed = seed;
this.skinColor = skinColor;
this.taste = taste;
}
//getters and setters
public String getSeed() {
return seed;
}
public void setSeed(String seed) {
this.seed = seed;
}
public String getSkinColor() {
return skinColor;
}
public void setSkinColor(String skinColor) {
this.skinColor = skinColor;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
//eat method
public void eat(){
//general code on how to eat a fruit
}
//juice method
public void juice() {
//general code on how to juice a fruit
}
}

Μια από τις πιο αξιοσημείωτες πτυχές της παραπάνω γονικής κλάσης είναι ο τροποποιητής πρόσβασης που χρησιμοποιείται με κάθε δήλωση μεταβλητής. Ο τροποποιητής προστατευμένης πρόσβασης είναι ιδανικός για χρήση σε γονικές τάξεις επειδή εμποδίζει τις τάξεις που δεν ανήκουν σε παιδιά να αποκτήσουν πρόσβαση στα χαρακτηριστικά δεδομένων της κλάσης γονέα.

Πιο κάτω στον κώδικα εισάγετε τους κατασκευαστές, τους κατασκευαστές και τους ρυθμιστές που αποτελούν γενικά δομικά στοιχεία για οποιαδήποτε κλάση Java. Τέλος, εισάγετε δύο μεθόδους (χυμός και φαγητό) που δημιουργούνται στη γονική τάξη του προγράμματός μας, επειδή είναι καθολικές για όλα τα φρούτα - όλα τα φρούτα μπορούν να καταναλωθούν και να αποχυμωθούν.

Δημιουργία μαθημάτων για παιδιά στην Java

Οι τάξεις παιδιών ονομάζονται συνήθως εξειδικευμένες ή παράγωγες κατηγορίες επειδή κληρονομούν την κατάσταση και τη συμπεριφορά από έναν γονέα και συχνά προσαρμόζουν αυτά τα χαρακτηριστικά να είναι πιο συγκεκριμένα.

Συνεχίζοντας με το παράδειγμά μας, θα πρέπει να μπορείτε να δείτε γιατί το πορτοκάλι θα ήταν μια κατάλληλη παιδική κατηγορία της παραπάνω κατηγορίας φρούτων.

Παράδειγμα πορτοκαλί παιδικής τάξης


public class Orange extends Fruit{
//variable declaration
private int supremes;
//default constructor
public Orange() {
supremes = 0;
}
//primary constructor
public Orange(String seed, String skinColor, String taste, int supremes){
super(seed, skinColor, taste);
this.supremes = supremes;
}
//getters and setters
public int getsupremes() {
return supremes;
}
public void setsupremes(int supremes) {
this.supremes = supremes;
}
//eat method
public void eat(){
//how to eat an orange
}
//juice method
public void juice() {
//how to juice and orange
}
//peel method
public void peel(){
//how to peel an orange
}
}

Υπάρχει διαφορά μεταξύ της εμφάνισης μιας κανονικής δήλωσης κλάσης Java και αυτής που έχουμε στον παραπάνω κώδικα. Η λέξη -κλειδί extends είναι αυτό που χρησιμοποιείται στην Java για να καταστεί δυνατή η κληρονομικότητα.

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

Το μοναδικό χαρακτηριστικό που έχει η πορτοκαλί τάξη μας ταυτίζεται με το όνομα της μεταβλητής supremes (που είναι το επίσημο όνομα για τα μικρά τμήματα που βρίσκονται στα πορτοκάλια). Εδώ μπαίνει στο παιχνίδι η εξειδίκευση. δεν έχουν όλα τα φρούτα supremes αλλά όλα τα πορτοκάλια, οπότε η διατήρηση της μεταβλητής supremes για την κατηγορία πορτοκαλιού είναι λογική.

Η προσθήκη της μεθόδου φλούδας στις προϋπάρχουσες μεθόδους κατανάλωσης και χυμού είναι επίσης λογική, διότι αν και δεν μπορούν να ξεφλουδιστούν όλα τα φρούτα, τα πορτοκάλια συχνά ξεφλουδίζονται.

Θα πρέπει να έχετε κατά νου ότι αν δεν σκοπεύαμε να τροποποιήσουμε τις υπάρχουσες μεθόδους κατανάλωσης και χυμού, δεν θα χρειαζόταν να τις συμπεριλάβουμε στην τάξη πορτοκαλιού μας. Οι μέθοδοι στην κατηγορία πορτοκαλιού παρακάμπτουν οποιαδήποτε παρόμοια μέθοδο στην κατηγορία φρούτων. Έτσι, αν όλα τα φρούτα τρώγονταν και χυμόνταν με τον ίδιο τρόπο, δεν θα χρειαζόταν να δημιουργήσουμε αυτές τις μεθόδους στην τάξη πορτοκαλιού.

Οι κατασκευαστές ρόλων παίζουν στην κληρονομικότητα

Από προεπιλογή, οι κατασκευαστές κλάσης γονέα κληρονομούνται από θυγατρικές τάξεις. Επομένως, εάν δημιουργηθεί ένα αντικείμενο θυγατρικής κλάσης αυτό σημαίνει ότι ένα αντικείμενο γονικής κλάσης δημιουργείται επίσης αυτόματα.

Επιστρέφοντας στο παράδειγμά μας, κάθε φορά που δημιουργείται ένα νέο πορτοκαλί αντικείμενο δημιουργείται επίσης ένα αντικείμενο φρούτων επειδή ένα πορτοκάλι είναι φρούτο.

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

Η μέθοδος super στον κύριο κατασκευαστή μας παραπάνω είναι απαραίτητη επειδή καθορίζει ότι ο κύριος κατασκευαστής - και όχι ο προεπιλεγμένος κατασκευαστής - της κλάσης γονικού φρούτου πρέπει να καλείται κάθε φορά που δημιουργείται ένα πορτοκαλί αντικείμενο με παραμέτρους.

Τώρα μπορείτε να χρησιμοποιήσετε την κληρονομικότητα στην Java

Από αυτό το άρθρο, μπορέσατε να μάθετε τι είναι η κληρονομικότητα, πώς λειτουργεί και γιατί είναι μια τόσο σημαντική έννοια στον προγραμματισμό. Τώρα μπορείτε να δημιουργήσετε τις σχέσεις κληρονομιάς σας χρησιμοποιώντας τη γλώσσα προγραμματισμού Java. Επιπλέον, τώρα ξέρετε πώς να ξεπεράσετε τον κανόνα κληρονομιάς της Java, δημιουργώντας μια σχέση παππού και γιαγιά.

Πιστωτική εικόνα: Andreas Wohlfahrt / Pexels

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Πώς να οργανώσετε τον κώδικα σας με αντικείμενο και κληρονομικότητα

Ο σωστός προγραμματισμός αντικειμενοστραφής σημαίνει ότι πρέπει να γνωρίζετε για την κληρονομικότητα και πώς μπορεί να απλοποιήσει την κωδικοποίηση και να μειώσει τα σφάλματα.

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Ιάβα
  • Αντικειμενοστραφής προγραμματισμός
Σχετικά με τον Συγγραφέα Kadeisha Kean(Δημοσιεύθηκαν 21 άρθρα)

Ο Kadeisha Kean είναι προγραμματιστής λογισμικού πλήρους στοίβας και τεχνικός/συγγραφέας τεχνολογίας. Έχει την ξεχωριστή ικανότητα να απλοποιήσει μερικές από τις πιο πολύπλοκες τεχνολογικές έννοιες. παραγωγή υλικού που μπορεί να γίνει εύκολα κατανοητό από κάθε αρχάριο τεχνολογίας. Είναι παθιασμένη με τη συγγραφή, την ανάπτυξη ενδιαφέροντος λογισμικού και τα ταξίδια στον κόσμο (μέσω ντοκιμαντέρ).

Περισσότερα από τον Kadeisha Kean

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή