Hirdetés

Új hozzászólás Aktív témák

  • skoda12
    aktív tag

    Megint elakadtam egy kicsit: beágyazott osztályok. Ahány helyen nézem, annyiféle leírást találok. A mellékelt példák többnyire hasonlóak, de a magyarázatok...
    Azt kb. felfogtam, hogy a segítségükkel olyan objektumot tudok visszaadni egy metódusból, ami hozzáférhet az adott osztály/példány privát tagjaihoz. (hmmm... mire megfogalmazom, mit akarok kérdezni, még meg is értem? :) ) Ezért, erre találták ki a beágyazott osztályokat?

    Viszont gondot okoz a könyvem egy mondata: "... az így létrejövő objektum dinamikusan kapcsolódik a metódusban éppen érvényes aktuális példányhoz, és ez a kapcsolat a metódus elhagyása után is fennmarad."
    Ezt itt nem értem. Az OK, hogy ha az adott metódus visszatérési értékként vagy egy osztály/példányváltozóban visszaad egy ilyen objektumot, az megmarad. De ez (számomra) teljesen logikus. Miért van mégis hangsúlyozva ez a kapcsolat? Valamit félreértek és egyéb jelentősége van?

    -------
    Ha van egy ilyen interface-em:

    interface A { void x(); }

    Akkor az őt implementáló osztály x metódusánál miért reklamálja az Eclipse a "public" jelzőt?
    Egy belső osztályt akartam így leírni, de a
    class O implements A { void x(){ ... } }
    nem tetszett neki. Csak így fogadta el:
    class O implements A { void public x(){ ... } }

    Eztakkormostmért? :U

    Nézd meg, hogy tudnál külső osztályból létrehozni egy másik osztályba ágyazott osztályból egy példányt.

    package javaapplication1;

    class A{
    class B{

    }

    static class C{

    }
    }


    public class Main {


    public static void main(String[] args) {
    A a = new A();
    A.B b = a.new B();

    A.C c = new A.C();
    }

    }

    Mint láthatod, ha nem static nested classról van szó, akkor kell egy példány először a beágyazó osztályból. Ezért b által hivatkozott objektum kapcsolódik a által hivatkozotthoz.
    --------------------------------------------------
    Az interface-szes problémára: Egy interface minden függvénye impliciten public elérésű. Felülírási szabály szerint pedig nem szűkítheted egy függvény elérését (ezesetben publicról defaultra).

Új hozzászólás Aktív témák