Αντικειμενοστρεφής Προγραμματισμός χρησιμοποιεί την έννοια της κληρονομιάς για να επεκτείνουν τη λειτουργικότητα των αντικειμένων . Σκεφτείτε όταν ένας προγραμματιστής δημιουργεί ένα αντικείμενο ? Που μπορεί αργότερα να βρει ότι πρέπει να δημιουργήσει ένα πολύ παρόμοιο αντικείμενο με μικρές μόνο διαφορές ( ίσως να επεκτείνετε τη λειτουργικότητα του προηγούμενου αντικειμένου σε ένα νέο πλαίσιο ) . Αυτό είναι όπου κληρονομιά έρθει μέσα Ένα αντικείμενο που ένας προγραμματιστής " προέρχεται " από άλλο " βάση " αντικείμενο κληρονομεί τις μεθόδους και τις μεταβλητές της κατηγορίας αυτής , και μπορεί στη συνέχεια να προσθέσετε περισσότερες λειτουργίες σε αυτό ( όπως στο ακόλουθο παράδειγμα Java ) :
δημόσια τάξη Σφαίρα {
ακτίνα public int ?
}
δημόσια τάξη Ball επεκτείνει σφαίρα {
χρώμα δημόσια string? //Ball προσθέτει το "χρώμα" μεταβλητή , αλλά επίσης χρησιμοποιεί την " ακτίνα" μεταβλητή
}
εικόνων Πολλαπλές Κληρονομικότητα
Η
Σε κάποιο σημείο , ένας προγραμματιστής θα μπορούσε να γίνει στον πειρασμό να αντλήσει μια ενιαία κατηγορία από πολλαπλές κατηγορίες . Αυτό είναι γνωστό ως « πολλαπλή κληρονομικότητα » και ενώ φαινομενικά χρήσιμο , μπορεί να προκαλέσει προβλήματα , όπως το περιβόητο «πρόβλημα διαμάντι. " Το πρόβλημα διαμάντι συμβαίνει όταν δύο τάξεις κληρονομούν από την ίδια κατηγορία ( όπως η κατηγορία Β και C που προέρχονται από την κατηγορία Α ) , ενώ μια άλλη κατηγορία ( Δ ) κληρονομεί από δύο Β και C. Όταν δημιουργείται ένα αντικείμενο Α, το σύστημα αντιμετωπίζει ως ένας τύπος της βασικής κλάσης ( class " Ball" είναι μια " Σφαίρα ", για παράδειγμα ) . Στο πρόβλημα διαμάντι , το σύστημα δεν μπορεί να επηρεάσει καθοριστικά το ποια τάξη D είναι ( είναι πληκτρολογήστε το ABD ή πληκτρολογήστε ACD ; ), η οποία προκαλεί προβλήματα .
Η Java και πολλαπλή κληρονομικότητα
Η
Λόγω των προβλημάτων με την πολλαπλή κληρονομικότητα , Java δεν επιτρέπει πολλαπλή κληρονομικότητα . Ωστόσο , στην πραγματικότητα προέρχονται από τάξεις πολλαπλές κατηγορίες βάση μπορεί να επιτευχθεί με ασφαλή τρόπο μέσω της χρήσης των « διεπαφών ». Μια διεπαφή είναι παρόμοια σε μια κατηγορία , εκτός από το ότι δεν καθορίζει μόνο τη δομή της κατηγορίας, αλλά όχι το πραγματικό κώδικα . Μια βασική κλάση που υλοποιεί μια διεπαφή δεν σημαίνει απαραίτητα " κληρονομήσει " τη λειτουργικότητα της διεπαφής : υπόσχεται μόνο να χρησιμοποιήσει τη δομή της . Επειδή μια κλάση που υλοποιεί μια διεπαφή δεν κληρονομεί από άλλη κατηγορία ( και αυτό δεν είναι το είδος της κατηγορίας βάσης ) , τότε ο προγραμματιστής μπορεί να εφαρμόσει πολλαπλές διεπαφές που χρησιμοποιούν την ίδια κατηγορία
εικόνων Παράδειγμα : . Κληρονομικότητα και Διασυνδέσεις
Η
το παρακάτω παράδειγμα δείχνει τη διαφορά μεταξύ κληρονομικότητα αντικείμενο και ένα interface . Είναι σημαντικό , μια τάξη που κληρονομεί από άλλο αποκτά πρόσβαση στην κλάση βάσης, διότι γίνεται ουσιαστικά ένα είδος αυτής της κατηγορίας ( όπως στο " Ball" και " Σφαίρα " τάξεις) . Μια κλάση που υλοποιεί μια διεπαφή υπόσχεται μόνο να εφαρμόσει τη δομή της διεπαφής : δεν είναι το είδος της διασύνδεσης :
interface Βασικές {
int doubleA ( ) ? //Σημείωση : όχι πραγματικό κώδικα ορίζεται στο περιβάλλον
}
δημόσια τάξη Β υλοποιεί Βασικές {
δημόσια int a ?
public int doubleA ( ) //κλάση Β πρέπει να καθορίσει το " doubleA ( ) " μέθοδο για την εφαρμογή " Basic"
{ επιστρέψει μια * 2 ? } }
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα