Keresés

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

  • Lortech
    addikt

    Adott egy Counter és SubCounter, amely extendálja a Countert. Mindegyikben egy gc() methódus. A kérdésem, hogy a ciklusban (kérdőjeleknél), hogyan tudom az override-olt ősosztály gc()-t hívni?

          ArrayList<Counter> cList = new ArrayList<>();
            cList.add(new SubCounter());
            cList.add(new Counter());
            
            for(Counter list:cList) {
                System.out.println(list.gc());      
             ??????????????   
            }

    Itt a gc egy példányszintű metódus (instance method), ami késői kötést (late/dynamic binding) használ, így a Counter futásidejű típusa határozza meg, hogy melyik gc() metódus implementáció hívódik meg (polimorfizmus). Ha SubCounter újradefiniálta (override) a gc()-t, akkor ha a list változód futás idejű típusa SubCounter, akkor az override-olt változat fog hívódni, nem tudod meghívni a Counter gc() metódusát azon a példányon keresztül.

    (azért írtam zárójeleket, hogy jobban utána tudj nézni ezeknek a fogalmaknak)

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