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 revision
Previous revision
cpp:multiple_inheritance [2019/05/10 08:12] gthanoscpp:multiple_inheritance [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
Line 205: Line 205:
  
 Όπως έχουμε  εξηγήσει και σε προηγούμενες ενότητες το κριτήριο για να χρησιμοποιήσουμε κληρονομικότητα ή όχι είναι εάν ο νέος τύπος που προκύπτει από τη σχέση κληρονομικότητα διατηρεί όλα τα χαρακτηριστικά του γονικού τύπου. Στο συγκεκριμένο παράδειγμα, το ερώτημα που πρέπει να τεθεί είναι εάν η κλάση //LinkedStack// είναι και //LinkedList//. Η απάντηση είναι αρνητική, πράγμα που οδηγεί στο συμπέρασμα ότι η επιλογή τη κληρονομικότητας είναι λανθασμένη. Σωστότερη επιλογή θα ήταν η κλάση //LinkedList// να αποτελεί πεδίο της κλάσης //LinkedStack//. Όπως έχουμε  εξηγήσει και σε προηγούμενες ενότητες το κριτήριο για να χρησιμοποιήσουμε κληρονομικότητα ή όχι είναι εάν ο νέος τύπος που προκύπτει από τη σχέση κληρονομικότητα διατηρεί όλα τα χαρακτηριστικά του γονικού τύπου. Στο συγκεκριμένο παράδειγμα, το ερώτημα που πρέπει να τεθεί είναι εάν η κλάση //LinkedStack// είναι και //LinkedList//. Η απάντηση είναι αρνητική, πράγμα που οδηγεί στο συμπέρασμα ότι η επιλογή τη κληρονομικότητας είναι λανθασμένη. Σωστότερη επιλογή θα ήταν η κλάση //LinkedList// να αποτελεί πεδίο της κλάσης //LinkedStack//.
-</WRAP> 
  
-<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//.
  
-Εάν η σχέση κληρονομικότητας είχε οριστεί //protected//, τότε οι απόγονοι της //LinkedStack// θα γνωρίζουν τη σχέση κληρονομικότητας και θα μπορούν να χρησιμοποιήσουν τα //public// και //protected// μέλη της κλάσης //LinkedList//.+Αντίστοιχα, εάν η σχέση κληρονομικότητας είχε οριστεί //__protected__//, τότε οι απόγονοι της //LinkedStack// θα γνωρίζουν τη σχέση κληρονομικότητας και θα μπορούν να χρησιμοποιήσουν τα //public// και //protected// μέλη της κλάσης //LinkedList//.
 </WRAP> </WRAP>
  
cpp/multiple_inheritance.1557475938.txt.gz · Last modified: 2019/05/10 07:12 (external edit)