Junior — Middle
Ποια είναι η διαφορά μεταξύ μιας εσωτερικής κλάσης και μιας εσωτερικής κλάσης στην προγραμματισμό;
sobes.tech AI
Απάντηση από AI
Στην Java (και στο Android) η εσωτερική κλάση είναι οποιαδήποτε κλάση που δηλώνεται μέσα σε μια άλλη κλάση. Οι εσωτερικές κλάσεις υπάρχουν σε δύο τύπους:
- Στατική εσωτερική κλάση (static nested class) — δηλώνεται με τον τροποποιητή
static. Δεν έχει άμεση πρόσβαση στα μη στατικά μέλη της εξωτερικής κλάσης. - Εσωτερική κλάση (inner class) — εσωτερική κλάση χωρίς τον τροποποιητή
static. Συνδέεται με ένα στιγμιότυπο της εξωτερικής κλάσης και έχει πρόσβαση στα μη στατικά πεδία και μεθόδους της.
Παράδειγμα:
class Outer {
private int outerField = 10;
static class StaticNested {
void print() {
// Δεν μπορεί να προσπελάσει άμεσα το outerField
System.out.println("Στατική εσωτερική κλάση");
}
}
class Inner {
void print() {
// Μπορεί να προσπελάσει το outerField
System.out.println("Εσωτερική κλάση, outerField = " + outerField);
}
}
}
Έτσι, η κύρια διαφορά είναι ότι η εσωτερική κλάση συνδέεται με ένα αντικείμενο της εξωτερικής κλάσης και μπορεί να προσπελάσει τα μη στατικά μέλη της, ενώ η στατική εσωτερική κλάση δεν μπορεί.