Βίντεο: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024
Και οι δύο διεπαφές και οι αφηρημένες τάξεις έχουν αφηρημένες μεθόδους στην Java. Αλλά οι αφηρημένες μέθοδοι διαδραματίζουν ελαφρώς διαφορετικούς ρόλους σε αυτά τα δύο είδη τύπων αναφοράς. Πώς μπορείτε να κρατήσετε όλα ευθεία στο μυαλό σας;
Το πρώτο πράγμα που πρέπει να κάνετε είναι να θυμάστε ότι κανείς δεν μαθαίνει αντικειμενοστραφείς προγραμματιστικές έννοιες χωρίς να πάρει πολλή πρακτική στο γράψιμο κώδικα. Αν έχετε συγχέεται, αυτό μπορεί να είναι καλό. Αυτό σημαίνει ότι έχετε καταλάβει αρκετά για να μάθετε πόσο περίπλοκα είναι αυτά τα πράγματα. Όσο περισσότερος κώδικας γράφετε, τόσο πιο άνετα θα γίνετε με τάξεις, διεπαφές και όλες αυτές τις άλλες ιδέες.
Το επόμενο πράγμα που πρέπει να κάνετε είναι να λύσετε τις διαφορές στον τρόπο που δηλώνετε αφηρημένες μεθόδους. Εδώ είναι η ιστορία.
Σε μια συνηθισμένη (μη αφηρημένη) κλάση | σε μια διεπαφή | σε μια αφηρημένη κλάση | |
Επιτρέπονται αφηρημένες μέθοδοι; | Όχι | Ναι | Ναι |
Μπορεί μια δήλωση μεθόδου να περιέχει τη λέξη-κλειδί αφηρημένη ; | Όχι | Ναι | Ναι |
Μπορεί μια δήλωση μεθόδου να περιέχει την προεπιλεγμένη λέξη-κλειδί (που σημαίνει "μη αφηρημένη"); | Όχι | Ναι | Όχι |
Δεν υπάρχει ούτε η αφηρημένη ούτε η προεπιλογή | Δεν είναι αφηρημένη | Περίληψη | Δεν είναι αφηρημένη |
Και οι δύο διεπαφές και οι αφηρημένες τάξεις έχουν αφηρημένες μεθόδους. Επομένως ίσως αναρωτιέστε πώς θα πρέπει να επιλέξετε μεταξύ της δήλωσης διεπαφής και της δήλωσης μιας αφηρημένης κλάσης. Στην πραγματικότητα, μπορείτε να ρωτήσετε τρεις επαγγελματίες προγραμματιστές σχετικά με το πώς οι διασυνδέσεις και οι αφηρημένες τάξεις διαφέρουν μεταξύ τους. Αν το κάνετε, μπορείτε να λάβετε πέντε διαφορετικές απαντήσεις. (Ναι, πέντε απαντήσεις και όχι τρεις απαντήσεις.)
Οι διασυνδέσεις και οι αφηρημένες κλάσεις είναι παρόμοια θηρία και τα νέα χαρακτηριστικά της Java 8 τα καθιστούσαν ακόμη πιο παρόμοια από ό, τι σε προηγούμενες εκδόσεις Java. Αλλά η βασική ιδέα είναι για τις σχέσεις μεταξύ των πραγμάτων.
- Η επέκταση μιας υποκατηγορίας αντιπροσωπεύει είναι μια σχέση.
- Η υλοποίηση διεπαφής αντιπροσωπεύει μια σχέση μπορεί να κάνει.
Αν θέλετε πιο απτές ενδείξεις για τη διαφορά ανάμεσα σε μια διεπαφή και μια αφηρημένη κλάση, σκεφτείτε το εξής: Μια τάξη μπορεί να υλοποιήσει πολλές διεπαφές, αλλά μια τάξη μπορεί να επεκτείνει μόνο μία άλλη τάξη, ακόμη και αν αυτή η τάξη είναι μια αφηρημένη τάξη. Έτσι, αφού δηλώσατε
η δημόσια τάξη Dog επεκτείνει HousePet
δεν μπορείτε επίσης να κάνετε
Dog
να επεκτείνετε μια τάξη
φίλου
. Αλλά μπορείτε να κάνετε το
Dog
να εφαρμόσει μια διεπαφή
Befriendable
. Και τότε μπορείτε να κάνετε την ίδια κατηγορία
Dog
να εφαρμόσετε μια διεπαφή
Trainable
.
Και αν θέλετε μια εντυπωσιακή περισσότερη διαφορά ανάμεσα σε μια διεπαφή και μια αφηρημένη κλάση, εδώ είναι ένα για σας: Μια διεπαφή δεν μπορεί να περιέχει μη στατικά, μη τελικά πεδία.
Έτσι υπάρχει. Οι διεπαφές και οι αφηρημένες τάξεις είναι διαφορετικές μεταξύ τους. Αλλά αν είστε νέοι στο παιχνίδι, δεν πρέπει να ανησυχείτε για τη διαφορά. Απλά διαβάστε όσο πιο πολύ μπορείτε, και μην φοβάστε όταν βλέπετε μια αφηρημένη μέθοδο. Αυτό είναι το μόνο που υπάρχει σε αυτό.