Hirdetés

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

  • 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!

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