Σε αυτό το σεμινάριο, θα μάθετε γιατί δεν είναι δυνατή η κληρονομικότητα των τάξεων 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.








