This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
java:nested_classes [2017/02/03 10:50] gthanos [Τα είδη των εμφωλευμένων κλάσεων] |
java:nested_classes [2017/04/01 20:48] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | ||
| - | |||
| - | Η Java σας δίνει την δυνατότητα να ορίσετε μία κλάση μέσα σε άλλη κλάση. Οι κλάσεις αυτές ονομάζονται εμφωλευμένες κλάσεις και ορίζονται ως εξής: | ||
| - | <code java> | ||
| - | class OuterClass { | ||
| - | ... | ||
| - | class NestedClass { | ||
| - | ... | ||
| - | } | ||
| - | ... | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | Ο παραπάνω ορισμός προϋποθέτει ότι για την εμφωλευμένη κλάση υπάρχει πάντα κάποια εξωτερική κλάση (**outer class**) που την εμπεριέχει. | ||
| - | |||
| - | ===== Γιατί να χρησιμοποιήσουμε εμφωλευμένες κλάσεις ===== | ||
| - | |||
| - | * Η χρήση εμφωλευμένων κλάσεων μας δίνει την δυνατότητα να ομαδοποιήσουμε μέσα σε ένα αρχείο κλάσεις που χρησιμοποιούνται μόνο σε ένα σημείο του προγράμματος μας. Συνήθως οι εμφωλευμένες κλάσεις είναι βοηθητικές κλάσεις που χρησιμοποιούνται από την εξωτερική κλάση. | ||
| - | * Όπως θα δούμε παρακάτω οι εμφωλευμένες κλάσεις έχουν πρόσβαση στα πεδία και τις μεθόδους της εξωτερικής τους κλάσης και αντίστροφά η εξωτερική κλάση έχει πρόσβαση στα πεδία και τις μεθόδους της εμφωλευμένης κλάσης ανεξάρτητα από τους προσδιορισστές πρόσβασης που θα οριστούν για την εσωτερική κλάση ή τα πεδία και τις μεθόδους της εξωτερικής κλάσης. Το παραπάνω δίνει την δυνατότητα να ορίσουμε εμφωλευμένες κλάσεις ως **private** κλάσεις, | ||
| - | |||
| - | <WRAP info 80% center round> Οι εμφωλευμένες κλάσεις χρησιμοποιούνται συχνά κατά τη συγγραφή παραθυρικών εφαρμογών (Graphical User Interfaces) με χρήση Swing. | ||
| - | </ | ||
| - | |||
| - | ===== Τα είδη των εμφωλευμένων κλάσεων ===== | ||
| - | |||
| - | Οι εμφωλευμένες κλάσεις μπορούν να χωριστούν στις εξής κατηγορίες. | ||
| - | |||
| - | < | ||
| - | Nested Classes | ||
| - | | | ||
| - | v | ||
| - | ------------------------------------------------------- | ||
| - | | | | ||
| - | v v | ||
| - | | ||
| - | Classes | ||
| - | _________________/ | ||
| - | | | ||
| - | v | ||
| - | Inner Classes | ||
| - | | ||
| - | </ | ||
| - | |||
| - | * **Στατικές εμφωλευμένες κλάσεις: | ||
| - | * **Μη-στατικές εμφωλευμένες κλάσεις: | ||
| - | * **Εσωτερικές κλάσεις: | ||
| - | * **Τοπικές εμφωλευμένες κλάσεις** | ||
| - | * **Ανωνυμές εμφωλευμένες κλάσεις** | ||
| - | |||
| - | |||
| - | |Προηγούμενο: | ||
| - | |||