Abstract Class vs Inheritance
Η Abstract class και η Inheritance είναι δύο σημαντικές αντικειμενοστρεφείς έννοιες που απαντώνται σε πολλές αντικειμενοστρεφείς γλώσσες προγραμματισμού όπως η Java. Η Abstract class μπορεί να θεωρηθεί ως μια αφηρημένη έκδοση μιας κανονικής (συγκεκριμένης) κλάσης, ενώ η Inheritance επιτρέπει σε νέες κλάσεις να επεκτείνουν άλλες κλάσεις. Η αφηρημένη κλάση είναι μια κλάση που δεν μπορεί να αρχικοποιηθεί αλλά μπορεί να επεκταθεί. Έτσι, οι τάξεις Abstract έχουν νόημα μόνο εάν η γλώσσα προγραμματισμού υποστηρίζει κληρονομικότητα. Στην Java, οι κλάσεις Abstract δηλώνονται χρησιμοποιώντας τη λέξη-κλειδί Abstract, ενώ η λέξη-κλειδί Extends χρησιμοποιείται για κληρονομικότητα από μια (super) κλάση.
Τι είναι Abstract Class;
Τυπικά, οι Abstract classes, γνωστές και ως Abstract Base Classes (ABC), δεν μπορούν να δημιουργηθούν (δεν μπορεί να δημιουργηθεί μια παρουσία αυτής της κλάσης). Έτσι, οι τάξεις Abstract έχουν νόημα μόνο εάν η γλώσσα προγραμματισμού υποστηρίζει κληρονομικότητα (ικανότητα δημιουργίας υποκλάσεων από την επέκταση μιας κλάσης). Οι αφηρημένες κλάσεις συνήθως αντιπροσωπεύουν μια αφηρημένη έννοια ή οντότητα με μερική ή καθόλου υλοποίηση. Επομένως, οι Abstract classes λειτουργούν ως γονικές κλάσεις από τις οποίες προέρχονται οι θυγατρικές κλάσεις, έτσι ώστε η θυγατρική κλάση θα μοιράζεται τα ημιτελή χαρακτηριστικά της γονικής κλάσης και η λειτουργικότητα μπορεί να προστεθεί για την ολοκλήρωσή τους.
Οι αφηρημένες τάξεις μπορεί να περιέχουν μεθόδους Abstract. Οι υποκλάσεις που επεκτείνουν μια αφηρημένη κλάση μπορούν να εφαρμόσουν αυτές τις (κληρονομημένες) Αφηρημένες μεθόδους. Εάν η θυγατρική κλάση υλοποιεί όλες αυτές τις Abstract μεθόδους, είναι μια συγκεκριμένη κλάση. Αλλά αν δεν το κάνει, η παιδική τάξη γίνεται επίσης μια τάξη Abstract. Αυτό που σημαίνει όλα αυτά είναι ότι, όταν ο προγραμματιστής ορίζει μια κλάση ως Abstract, λέει ότι η κλάση θα είναι ημιτελής και θα έχει στοιχεία που πρέπει να συμπληρωθούν από τις υποκλάσεις κληρονομιάς. Αυτός είναι ένας ωραίος τρόπος για να δημιουργήσετε ένα συμβόλαιο μεταξύ δύο προγραμματιστών, που απλοποιεί τις εργασίες στην ανάπτυξη λογισμικού. Ο προγραμματιστής, ο οποίος γράφει κώδικα για να κληρονομήσει, πρέπει να ακολουθεί ακριβώς τους ορισμούς της μεθόδου (αλλά φυσικά μπορεί να έχει τη δική του υλοποίηση).
Τι είναι η κληρονομικότητα;
Η κληρονομικότητα είναι μια αντικειμενοστραφή έννοια, η οποία επιτρέπει σε νέες κλάσεις να επεκτείνουν άλλες κλάσεις. Η λέξη-κλειδί Extends χρησιμοποιείται για την υλοποίηση της έννοιας της κληρονομικότητας στη γλώσσα προγραμματισμού Java. Η κληρονομικότητα ουσιαστικά παρέχει επαναχρησιμοποίηση κώδικα επιτρέποντας την επέκταση των ιδιοτήτων και της συμπεριφοράς μιας υπάρχουσας κλάσης από μια κλάση που ορίστηκε πρόσφατα. Όταν μια νέα υποκλάση (ή παράγωγη κλάση) επεκτείνει μια υπερκλάση (ή γονική κλάση), αυτή η υποκλάση θα κληρονομήσει όλα τα χαρακτηριστικά και τις μεθόδους της υπερκλάσης. Η υποκλάση μπορεί προαιρετικά να παρακάμψει τη συμπεριφορά (παροχή νέας ή εκτεταμένης λειτουργικότητας σε μεθόδους) που κληρονομήθηκε από τη γονική κλάση. Συνήθως, μια υποκλάση δεν μπορεί να επεκτείνει πολλαπλές υπερκλάσεις (π.χ. σε Java). Επομένως, δεν μπορείτε να χρησιμοποιήσετε επεκτάσεις για πολλαπλή κληρονομιά. Για να έχετε πολλαπλή κληρονομικότητα, πρέπει να χρησιμοποιήσετε διεπαφές.
Ποια είναι η διαφορά μεταξύ Abstract Class και Inheritance;
Οι αφηρημένες κλάσεις συνήθως αντιπροσωπεύουν μια αφηρημένη έννοια ή μια οντότητα με μερική ή καθόλου υλοποίηση. Η κληρονομικότητα επιτρέπει στις νέες κλάσεις να επεκτείνουν άλλες κλάσεις. Επειδή, οι κλάσεις Abstract δεν μπορούν να δημιουργηθούν, πρέπει να χρησιμοποιήσετε την έννοια της κληρονομικότητας για να χρησιμοποιήσετε τις κλάσεις Abstract. Διαφορετικά, μια τάξη Abstract δεν έχει καμία χρήση. Οι αφηρημένες κλάσεις μπορεί να περιέχουν Abstract μεθόδους και όταν η κλάση επεκτείνεται, όλες οι μέθοδοι (Abstract και συγκεκριμένες) κληρονομούνται. Η κλάση που κληρονομείται μπορεί να εφαρμόσει οποιαδήποτε ή όλες τις μεθόδους. Εάν δεν υλοποιηθούν όλες οι μέθοδοι Abstract, τότε αυτή η κλάση γίνεται επίσης μια κλάση Abstract. Μια κλάση δεν μπορεί να κληρονομήσει από περισσότερες από μία κλάσεις Abstract (αυτό δεν είναι μια ποιότητα των κατηγοριών Abstract καθεαυτή, αλλά μάλλον ένας περιορισμός κληρονομικότητας).
Σχετικές αναρτήσεις:
Διαφορά μεταξύ αφηρημένης και συγκεκριμένης τάξης
Διαφορά μεταξύ εικονικής και αφηρημένης
Διαφορά μεταξύ αφηρημένης τάξης και διεπαφής
Διαφορά μεταξύ εφαρμογών και επεκτάσεων
Διαφορά μεταξύ γραφήματος και δέντρου
Αρχειοθετήθηκε κάτω από: Προγραμματισμός Με ετικέτα: ABC, abstract, Abstract Base Classes, Abstract class, Abstract classes, Abstract keyword, Abstract method, specific class, Extends keyword, Inheritance, Inheritance class, inherited class, Java, multiple inheritance, αντικειμενοστρεφείς έννοιες, κανονική τάξη, σούπερ κλάση
Σχετικά με τον συγγραφέα: Indika
Indika, BSc. Eng, MSECE Computer Engineering, PhD. Επιστήμη Υπολογιστών, είναι Επίκουρος Καθηγητής και έχει ερευνητικά ενδιαφέροντα στους τομείς της Βιοπληροφορικής, της Υπολογιστικής Βιολογίας και της Βιοϊατρικής Επεξεργασίας Φυσικής Γλώσσας.
Σχόλια
-
Ο Τζέισον λέει
30 Αυγούστου 2017 στις 1:25 μ.μ.
Σας ευχαριστούμε που εξηγήσατε τη διαφορά. Όλες οι απορίες μου λύθηκαν με αυτό.
Απάντηση
-
Aus λέει
10 Μαΐου 2019 στις 3:04 μ.μ.
η καλύτερη απάντηση στον ιστό, ο δάσκαλος δεν εξηγεί σκατά και δεν έχει νόημα, μονότονη mf. Έτσι εξηγείτε τις έννοιες.
Απάντηση
Αφήστε μια απάντηση Ακύρωση απάντησης
Η διεύθυνση email σας δεν θα δημοσιευτεί. Τα υποχρεωτικά πεδία επισημαίνονται με
Σχόλιο
Όνομα
Ιστότοπος