User Tools

Site Tools


cpp:multiple_inheritance

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
cpp:multiple_inheritance [2017/05/11 10:15] gthanoscpp:multiple_inheritance [2019/05/10 08:12] gthanos
Line 204: Line 204:
 Σε αυτό το σημείο θα πρέπει να σημειώσουμε ότι η επιλογή της κληρονομικότητας στη συγκεκριμένη περίπτωση **είναι λανθασμένη** και έγινε μόνο και μόνο για λόγους παρουσίασης της πολλαπλής κληρονομικότητας.  Σε αυτό το σημείο θα πρέπει να σημειώσουμε ότι η επιλογή της κληρονομικότητας στη συγκεκριμένη περίπτωση **είναι λανθασμένη** και έγινε μόνο και μόνο για λόγους παρουσίασης της πολλαπλής κληρονομικότητας. 
  
-Όπως έχουμε  εξηγήσει και σε προηγούμενες ενότητες το κριτήριο για να χρησιμοποιήσουμε κληρονομικότητα ή όχι είναι εάν ο νέος τύπος που προκύπτει από τη σχέση κληρονομικότητα διατηρεί όλα τα χαρακτηριστικά του γονικού τύπου. Στο συγκεκριμένο παράδειγμα, το ερώτημα που πρέπει να τεθεί είναι εάν η κλάση //LinkedStack// είναι και //LinkedList//. Η απάντηση είναι αρνητική πράγμα που οδηγεί στο συμπέρασμα ότι η επιλογή τη κληρονομικότητας είναι λανθασμένη. Σωστότερη επιλογή θα ήταν η κλάση //LinkedList// να αποτελεί πεδίο της κλάσης //LinkedStack//.+Όπως έχουμε  εξηγήσει και σε προηγούμενες ενότητες το κριτήριο για να χρησιμοποιήσουμε κληρονομικότητα ή όχι είναι εάν ο νέος τύπος που προκύπτει από τη σχέση κληρονομικότητα διατηρεί όλα τα χαρακτηριστικά του γονικού τύπου. Στο συγκεκριμένο παράδειγμα, το ερώτημα που πρέπει να τεθεί είναι εάν η κλάση //LinkedStack// είναι και //LinkedList//. Η απάντηση είναι αρνητικήπράγμα που οδηγεί στο συμπέρασμα ότι η επιλογή τη κληρονομικότητας είναι λανθασμένη. Σωστότερη επιλογή θα ήταν η κλάση //LinkedList// να αποτελεί πεδίο της κλάσης //LinkedStack//.
 </WRAP> </WRAP>
  
 <WRAP center round tip 80%> <WRAP center round tip 80%>
-Προκειμένου να μην δημοσιοποιήσουμε το παραπάνω λάθος, ορίζουμε τη σχέση κληρονομικότητας της κλάσης //LinkedStack// σε σχέση με την κλάση //LinkedList// ως //private//. Σε αυτή την περίπτωση τα //public// και //protected// μέλη της κλάσης //LinkedList// γίνονται //private// στην κλάση //LinkedStack//. Έτσι οι κλάσεις ή οι συναρτήσεις που χρησιμοποιούν τη //LinkedStack// είναι αδύνατο να γνωρίζουν ότι η συγκεκριμένη κλάση είναι απόγονος της //LinkedList//. Επίσης είναι αδύνατο να χρησιμοποιήσουν κάποια από τις μεθόδους της //LinkedList// μέσω της //LinkedStack//+**Προκειμένου να μην δημοσιοποιήσουμε την παραπάνω λάθος σχέση κληρονομικόητας**, ορίζουμε τη σχέση κληρονομικότητας της κλάσης //LinkedStack// σε σχέση με την κλάση //LinkedList// ως //private//. Σε αυτή την περίπτωση τα //public// και //protected// μέλη της κλάσης //LinkedList// γίνονται //private// στην κλάση //LinkedStack//. Έτσι οι κλάσεις ή οι συναρτήσεις που χρησιμοποιούν τη //LinkedStack// είναι αδύνατο να γνωρίζουν ότι η συγκεκριμένη κλάση είναι απόγονος της //LinkedList//. Επίσης είναι αδύνατο να χρησιμοποιήσουν κάποια από τις μεθόδους της //LinkedList// μέσω της //LinkedStack//
  
 Εάν η σχέση κληρονομικότητας είχε οριστεί //public//, τότε οι μέθοδοι και οι κλάσεις που χρησιμοποιούν τη //LinkedStack// θα γνωρίζουν τη σχέση κληρονομικότητας και θα μπορούν να χρησιμοποιήσουν τα //public// μέλη της κλάσης //LinkedList//. Επίσης, οι απόγονοι θα μπορούν να χρησιμοποιήσουν τα //public// και //protected// μέλη της κλάσης //LinkedList//. Εάν η σχέση κληρονομικότητας είχε οριστεί //public//, τότε οι μέθοδοι και οι κλάσεις που χρησιμοποιούν τη //LinkedStack// θα γνωρίζουν τη σχέση κληρονομικότητας και θα μπορούν να χρησιμοποιήσουν τα //public// μέλη της κλάσης //LinkedList//. Επίσης, οι απόγονοι θα μπορούν να χρησιμοποιήσουν τα //public// και //protected// μέλη της κλάσης //LinkedList//.
cpp/multiple_inheritance.txt · Last modified: 2021/05/07 08:44 (external edit)