Σε αυτό το σεμινάριο, θα μάθετε γιατί δεν είναι δυνατή η κληρονομικότητα των τάξεων enum. Θα μάθετε επίσης να εφαρμόζετε διεπαφές σε μια κλάση enum.
Πριν μάθετε αυτό το σεμινάριο, βεβαιωθείτε ότι γνωρίζετε
- Η Java αθροίζει
- Κληρονομιά Java
- Διεπαφές Java
Κληρονομική τάξη από μια κλάση enum
Στην Java, οι κλάσεις enum είναι final
από προεπιλογή. Ως εκ τούτου, δεν μπορούμε να κληρονομήσουμε άλλες τάξεις από αυτό. Για παράδειγμα,
enum A ( // enum constants // fields and methods ) class B extends A ( public static void main(String() args) ( // statements ) ) # Error: cannot inherit from final A
Κληρονομώντας μια κλάση enum από άλλη τάξη
Δεν μπορούμε να επεκτείνουμε μαθήματα enum στην Java. Είναι επειδή όλα τα αθροίσματα στην Java προέρχονται από java.lang.Enum
. Και η επέκταση πολλαπλών τάξεων (πολλαπλή κληρονομιά) δεν επιτρέπεται στην Java.
Για παράδειγμα,
class A ( // class body ) enum B extends A ( // class body )
Αυτό θα δημιουργήσει ένα σφάλμα.
Java Enum και διασύνδεση
Όπως μάθαμε, δεν μπορούμε να κληρονομήσουμε μαθήματα enum στην Java. Ωστόσο, οι κλάσεις enum μπορούν να εφαρμόσουν διεπαφές.
Παράδειγμα: διεπαφή εφαρμογής enum
interface Pizza ( public void displaySize(); ) enum Size implements Pizza ( SMALL, MEDIUM, LARGE, EXTRALARGE; public void displaySize() ( System.out.println("The size is " + this); ) ) class Main ( public static void main(String() args) ( Size.MEDIUM.displaySIze(); ) )
Παραγωγή
Το μέγεθος είναι MEDIUM
Στο παραπάνω παράδειγμα, έχουμε δημιουργήσει ένα μέγεθος κλάσης enum. Αυτή η τάξη εφαρμόζει τη διεπαφή Pizza.
Δεδομένου ότι εφαρμόζουμε μια διεπαφή, έχουμε παράσχει μια εφαρμογή της αφηρημένης μεθόδου displaySize()
μέσα στην κλάση enum.