Βίντεο: C++ μαθήματα (114) 2024
Δεδομένου ότι είναι διανοητικά ικανοποιητική ως παράγοντας στην C ++, εισάγει ένα δικό του πρόβλημα. Σε ένα παράδειγμα σχετικά με τις τάξεις τραπεζικού λογαριασμού, και συγκεκριμένα την κοινή κατηγορία βάσης . Σκεφτείτε για ένα λεπτό πώς μπορείτε να καθορίσετε τις διάφορες λειτουργίες μελών που ορίζονται στον λογαριασμό .
Οι περισσότερες λειτουργίες μελών λογαριασμού δεν παρουσιάζουν πρόβλημα, επειδή και οι δύο τύποι λογαριασμών τις εφαρμόζουν με τον ίδιο τρόπο. Ωστόσο, η εφαρμογή αυτών των κοινών λειτουργιών με Λογαριασμός :: απόσυρση () είναι διαφορετική.
Οι κανόνες απόσυρσης από λογαριασμό ταμιευτηρίου είναι διαφορετικοί από αυτούς που ισχύουν για την απόσυρση από έναν λογαριασμό ελέγχου. Θα πρέπει να εφαρμόσετε Αποταμίευση:: απόσυρση () διαφορετικά από εσάς Έλεγχος:: απόσυρση () . Αλλά πώς πρέπει να εφαρμόσετε τον λογαριασμό:: απόσυρση ();
Ας ζητήσουμε βοήθεια από τον διαχειριστή τράπεζας. Η συνομιλία μπορεί να έχει ως εξής:
"Ποιοι είναι οι κανόνες για την απόσυρση από έναν λογαριασμό; " εσύ ρωτάς.
"Τι είδους λογαριασμού; Εξοικονόμηση ή έλεγχος; "Έρχεται η απάντηση.
"Από έναν λογαριασμό", λέτε. "Απλά ένας λογαριασμός. "
Λευκή εμφάνιση.
Το πρόβλημα είναι ότι το ερώτημα δεν έχει νόημα. Δεν υπάρχει τέτοιο πράγμα σαν "μόνο ένας λογαριασμός. "Όλοι οι λογαριασμοί (σε αυτό το παράδειγμα) είτε ελέγχουν λογαριασμούς είτε λογαριασμούς ταμιευτηρίου. Η έννοια ενός λογαριασμού είναι μια αφηρημένη, που προσδιορίζει κοινές ιδιότητες στις δύο συγκεκριμένες κατηγορίες.
Είναι ελλιπής επειδή δεν διαθέτει την κρίσιμη απόσυρση ιδιοκτησίας () . (Αφού περιηγηθείτε στις λεπτομέρειες, μπορείτε να βρείτε και άλλες ιδιότητες που λείπουν από έναν απλό λογαριασμό.)
Μια αφηρημένη κλάση είναι αυτή που υπάρχει μόνο σε υποκατηγορίες. Μια κατηγορία σκυροδέματος είναι μια κλάση που δεν είναι αφηρημένη.