Składowe klas wewnętrznych.

0

Dlaczego tworząc obiekt w klasie zewnętrznej klasy wewnętrznej nie mogę odwołać się za pomocą ów klasy do składowej zewnętrznej w sposób bezpośredni? Np.

Wewnętrzna obiekt = new Wewnętrza();
System.out.println(obiekt.skladowa_zewnętrzna);

Tylko muszę w klasie wewnętrznej napisać coś w guście:

int skł_wew = skł_zew;

I dopiero za pomocą skł_zew odwołać się do skł_zew w np.

obiekt.skł_wew;

0

Bo czemu miałbyś móc? o_O Jaka niby logika by się za tym kryła?

0

Pisząc:

int skł_wew = skł_zew;
obiekt.skł_wew;

wcale nie odwołujesz się do skł_zew klasy zewnętrznej. Nie jest to możliwe, bo niby z jakiego obiektu tą skł_zew miałbyś brać?

Edit: Mówisz właściwie o statycznej klasie zagnieżdżonej (która jest zwykłą klasą, tylko z namespacem), czy o klasie wewnętrznej? W przypadku drugim można to robić tylko wewnątrz tych klas, gdzie niejawnie jest przekazywana referencja do obiektu zawierającego:

public class Outer {
    private int x;
    
    public Outer(int x) {
        this.x = x;
    }

    private class Inner {
        public void printX() {
            System.out.println(x);
            // to samo co:
            System.out.println(Outer.this.x);
        }
    }
    
    public static void main(String[] args) {
        new Outer(5).new Inner().printX();  // 5
        System.out.println(new Outer(5).new Inner().x);  // to niemożliwe, bo w Inner nie ma x
    }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1