Sobes.tech
Junior — Middle

Kāda ir atšķirība starp iekšējo klasi un iekļauto klasi programmēšanā?

sobes.tech AI

Atbilde no AI

Java (un Android) Iegremdētā klase ir jebkura klase, kas deklarēta citas klases iekšienē. Iegremdētās klases ir divu veidu:

  1. Statiska iegrimda klase (static nested class) — deklarēta ar static modifikatoru. Tai tieši nepieļauj piekļuvi ārējās klases nestatiskajiem locekļiem.
  2. Iekšējā klase (inner class) — klase bez static modifikatora. Tā ir saistīta ar ārējās klases instanci un piekļūst tās nestatiskajiem laukiem un metodēm.

Piemērs:

class Outer {
    private int outerField = 10;

    static class StaticNested {
        void print() {
            // Nav iespējams tieši piekļūt outerField
            System.out.println("Statiska iekšējā klase");
        }
    }

    class Inner {
        void print() {
            // Var piekļūt outerField
            System.out.println("Iekšējā klase, outerField = " + outerField);
        }
    }
}

Galvenā atšķirība ir tā, ka iekšējā klase ir saistīta ar ārējās klases objektu un var piekļūt tās nestatiskajiem locekļiem, bet statiskā iekšējā klase — nē.