Keresés

Hirdetés

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

  • Davs

    tag

    válasz Lacces #2972 üzenetére

    1.
    - Miért fér hozzá a tartalmozó osztály?
    - Itt most egymasba agyazott Classokrol van szo..Class classon belul (ez nem oroklodes!). Vegyunk pl egy sima public classot. Te a classon kivul tudsz a classbol objectet csinalni, hozzafersz a public valtozoihoz/metodusaihoz, a privathoz viszont nem! A privatot csak a class/object maga tudja hasznalni es ha ugy akarja az isten akkor kozvetlenul te is (egy public metodus a classon belul ami hozzaferest ad a privat valtozohoz). Namost ha egy class tartalmaz egy masik privat classot, akkor ahhoz is csak o fer hozza kozvetlenul.
    public class A{
    private class B{}
    }
    Leegyszerusitve vehetjuk ugy, hogy a B class az Aclass sajatja, tehat hozzaferhet.

    2.
    http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class
    Az elso valaszban van leirva peldaval, hogy hogyan ferhetsz hozza. Ha sima inner class-bol akarsz objektumot csinalni, akkor ha jol tudom eloszor kell egy object-et csinalnod a kulso classbol es csak utana tudsz a belsobol, mert a belso csak a kulson belul "el". Static-ot meg talan tudsz siman Kulso.Belso valtozo = new Kulso.Belso() ;

    3. passz :) Amugy azt polymorfizmusnak hivjak, amikor egy alosztalyt az ososztalyanak tekinted. Viszont igy hirtele fogalmam sincs, mi tortenik, ha privat class orokol az allattol..privat classbol egyaltalan lehet objektumot csinalni? :D

    4. Tudtommal privat dolgokat NEM orokolnek az alosztalyok. Ha maga az ososztaly privat, akkor lehet ott dob hibat, amikor az alosztaly akar orokolni (tipp).
    Protected egy olyan privat dolog, amit lehet orokolni, de kivulrol szinten nem fersz hozza.

    5. Amennyire tudom, egy classon belul alapbol minden privat.

  • D4nte

    csendes tag

    válasz Lacces #2972 üzenetére

    5. Annyi azért legyen már tisztázva (csak azért, mert nem értem, miért pont publikus meg privát láthatóságot írtál itt), hogy egy normál osztály (nem belső) csak publikus, vagy ha nem teszel ki láthatósági jelölést, akkor csomagszintű (package) láthatóságú lehet.

    A belső osztály már más kategóriába esik, az lehet public, protected, private, package (nincs kulcsszó írva) szintű is.

    (Még itt érdemes megemlíteni, ha esetleg itt lehetne kavarodás, hogy az Interface egy külön eset, ott minden tag public alapból. (mindegy hogy kiírod, vagy sem))

    Végül pedig az igazi kérdésedre, az előbb leírtak mellett, NEM a válasz, már fentebb is írták. Ha nincs feltüntetve, hogy milyen láthatóságú egy osztály tagja, akkor csomagszintű lesz.

    3. Nem tiszta nekem, hogy most belső osztályokkal (remélem nem), vagy normállal akartad megoldani, de ilyen dolgoknál (meg a legtöbbnél szintén) egyszerűen ki kell próbálni, ha tudod.

    public class Allat {
    void ugat() {
    System.out.println("Állatugatás");
    }

    public static void hajtovadaszat(Allat allatPeldany) {
    allatPeldany.ugat();
    }

    public static void main(String[] args) {
    Allat allat = new Allat();
    Kutya kutya = new Kutya();
    Farkas farkas = new Farkas();

    hajtovadaszat(allat);
    hajtovadaszat(kutya);
    hajtovadaszat(farkas);
    }
    }

    class Kutya extends Allat {
    void ugat() {
    System.out.println("Kutyaugatás");
    }
    }

    class Farkas extends Allat {
    void ugat() {
    System.out.println("Farkasugatás");
    }
    }

    kimenet:
    Állatugatás
    Kutyaugatás
    Farkasugatás

    Ennél a példánál tökéletesen működik a polimorfizmus. Ne zavarjon meg, hogy a leszármazott osztályok csomagszintűek lettek, most azért igazából, mert egy fájlba tettem (de lényegtelen ennél e példánál éppen).
    Próbálgasd módosítani a láthatóságokat, és nézd az eredményt, így kitapasztalhatod a dolgokat.

    (Itt az Allat osztály és az ugat metódusa lehetne inkább abstract, de kérdésedhez nem kapcsolódik igazából)
    Csináltam egy belső osztályos verziót is, talán közelebb van ahhoz amit gondoltál.
    másikverzió

    Java tutorials-t gyors, Thinking in java-t részletes tanuláshoz én is ajánlom, ha jól átveszed benne a dolgokat, a kérdéseid mind megválaszolódnak, plusz, ami nem világos, próbáld is ki!

  • Mukorka

    addikt

    válasz Lacces #2972 üzenetére

    a 3. kérdésed fordítási hibát okozna, nem exceptiont. A farkas osztály privát, példányként hogy adnád át?

    Mukor#2214 --- "Ezt nem én gondolom így, EZ EGY TÉNY!"

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