Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ μιας εσωτερικής κλάσης και μιας εσωτερικής κλάσης στην προγραμματισμό;

sobes.tech AI

Απάντηση από AI

Στην Java (και στο Android) η εσωτερική κλάση είναι οποιαδήποτε κλάση που δηλώνεται μέσα σε μια άλλη κλάση. Οι εσωτερικές κλάσεις υπάρχουν σε δύο τύπους:

  1. Στατική εσωτερική κλάση (static nested class) — δηλώνεται με τον τροποποιητή static. Δεν έχει άμεση πρόσβαση στα μη στατικά μέλη της εξωτερικής κλάσης.
  2. Εσωτερική κλάση (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);
        }
    }
}

Έτσι, η κύρια διαφορά είναι ότι η εσωτερική κλάση συνδέεται με ένα αντικείμενο της εξωτερικής κλάσης και μπορεί να προσπελάσει τα μη στατικά μέλη της, ενώ η στατική εσωτερική κλάση δεν μπορεί.