Potíže s dědičností

Tomáš Pitner, Radek Ošlejšek, Marek Šabo, Jakub Čecháček

Vtip

Dědičnost. Nejlepší objektově-orientovaný způsob, jak se pohádat a naštvat ty před námi i po nás.

Přínosy dědičnosti

  • Je fajn, ušetříme psaní kódu i jeho objem (kód je tam jednou), omezí se redundance.

  • Někdy dokonce i předejdeme chybám tím, že chybu opravíme na jednom místě a OK, protože efekt se hned bez dalšího promítne do všech podtříd = je poděděn.

  • Můžeme využít polymorfismus, kdy jsme schopni jednotně obsloužit více typů objektů

  • například Employee, Manager nebo Student jsou všechno osoby Person a mají tedy jméno getName()

Hlavní omezení

  • Dědičnost je příklad silné (těsné) závislosti.

  • Změna v rodičovské třídě (nadtřídě) má silný vliv na funkci, případně i kompilovatelnosti podtříd.

  • Metodu, která se dá překrýt v podtřídě, nesmíme volat z konstruktoru!

(Ne)použití virtuálních metod v konstruktorech

  • Metodu, která se dá překrýt v podtřídě, nesmíme volat z konstruktoru!

  • Příklad "prémiový" bankovní účet, kde má být po vytvoření hned 1000 Kč.

---
public class PremiumAccount {
    private int balance;
    public PremiumAccount() {
        this.balance = 1000;
    }
}
---