Middle
Τι είναι οι εσωτερικές κλάσεις;
sobes.tech AI
Απάντηση από AI
Μια εσωτερική κλάση είναι μια κλάση που ορίζεται μέσα σε μια άλλη κλάση.
Τύποι εσωτερικών κλάσεων στη Java:
-
Στατικές εσωτερικές κλάσεις (Static Nested Classes):
- Προσβάσιμες από την εξωτερική κλάση χωρίς το στιγμιότυπό της.
- Δεν έχουν άμεση πρόσβαση στα μη στατικά πεδία και μεθόδους της εξωτερικής κλάσης.
- Δηλώνονται με τη λέξη-κλειδί
static.
-
Εσωτερικές κλάσεις (Inner Classes):
- Μέλη-εσωτερικές κλάσεις (Member Inner Classes):
- Δηλώνονται σε επίπεδο μελών της εξωτερικής κλάσης.
- Έχουν πρόσβαση σε όλα τα μέλη της εξωτερικής κλάσης (συμπεριλαμβανομένων των ιδιωτικών).
- Απαιτούν ένα στιγμιότυπο της εξωτερικής κλάσης για τη δημιουργία του δικού τους στιγμιότυπου.
- Τοπικές εσωτερικές κλάσεις (Local Inner Classes):
- Ορίζονται μέσα σε μια μέθοδο, κατασκευαστή ή μπλοκ αρχικοποίησης.
- Είναι ορατές μόνο εντός αυτής της μεθόδου/μπλοκ.
- Έχουν πρόσβαση σε τοπικές μεταβλητές που είναι
finalή αποτελεσματικάfinalστο εξωτερικό πλαίσιο.
- Ανώνυμες εσωτερικές κλάσεις (Anonymous Inner Classes):
- Κλάσεις χωρίς όνομα.
- Χρησιμοποιούνται για τη δημιουργία αντικειμένων που υλοποιούν άμεσα μια διεπαφή ή επεκτείνουν μια κλάση.
- Ορίζονται και δημιουργούνται σε μια ενιαία ενέργεια.
- Μέλη-εσωτερικές κλάσεις (Member Inner Classes):
Παράδειγμα στατικής εσωτερικής κλάσης:
class OuterClass {
private static String msg = "Hello from Outer";
static class StaticNestedClass {
public void display() {
// Μπορεί να έχει πρόσβαση σε στατικά μέλη της εξωτερικής κλάσης
System.out.println(msg);
}
}
}
// Χρήση
// OuterClass.StaticNestedClass nestedObject = new OuterClass.StaticNestedClass();
// nestedObject.display();
Παράδειγμα μέλους-εσωτερικής κλάσης:
class OuterClass {
private String msg = "Hello from Outer";
class InnerClass {
public void display() {
// Μπορεί να έχει πρόσβαση σε όλα τα μέλη της εξωτερικής κλάσης
System.out.println(msg);
}
}
}
// Χρήση
// OuterClass outerObject = new OuterClass();
// OuterClass.InnerClass innerObject = outerObject.new InnerClass();
// innerObject.display();
Πλεονεκτήματα της χρήσης εσωτερικών κλάσεων:
- Ομαδοποίηση: Οι λογικά σχετικές κλάσεις μπορούν να ομαδοποιηθούν.
- Ενθυλάκωση: Οι εσωτερικές κλάσεις μπορούν να έχουν πρόσβαση σε ιδιωτικά μέλη της εξωτερικής κλάσης, βελτιώνοντας την ενθυλάκωση.
- Αναγνωσιμότητα και συντήρηση: Κρύβουν βοηθητικές κλάσεις μέσα στην κύρια κλάση.
- Αποτελεσματικότητα: Μπορούν να χρησιμοποιηθούν για τη δημιουργία πιο συμπαγών και αποδοτικών δομών δεδομένων.