public class Employee extends Person { // ... popis vlastností (proměnných, metod...) // zaměstnance navíc oproti (obecnému) člověku... }
ChovatelPsu
je současně typu Clovek
nebo
Pes
je současně typu DomaciZvire
Object
.
Person
← Employee
← Manager
extends
:
public class Employee extends Person { // ... popis vlastností (proměnných, metod...) // zaměstnance navíc oproti (obecnému) člověku... }
Opakování:
record
) nebo z C jako struct
.
Dědičnost (alespoň v javovém smyslu) znamená, že dceřinná třída (podtřída, potomek):
Account
Account
nazveme CreditAccount
public class CreditAccount extends Account { // private double balance; zdědí se z nadtřídy "Account" // zde pamatuji navíc, kolik mohu "jít do mínusu" private double creditLimit; public void add(double amount) { if (balance + creditLimit + amount >= 0) { // přes "super" zavoláme původní "neopatrnou" metodu super.add(amount); } else { System.err.println("Nelze odebrat částku " + (-amount)); } } // writeInfo(), transferTo(Account to, double amount) se zdědí }
extends
značí, že třída CreditAccount
je
potomkem/podtřídou/rozšířením/dceřinnou třídou (subclass) třídy Account
.
super.metoda(…);
značí, že je volána metoda
rodičovské třídy/předka/nadtřídy (superclass).
super
nepoužilo, zavolala by se metoda add
třídy CreditAccount
a program by se zacyklil!
Demoprojekt (viz IS) private_account
:
Account
PrivateAccount
, což je osobní/privátní účet
Demoprojekt (viz IS) checked_private_account
:
Account
(obyčejný účet)
PrivateAccount
(osobní/privátní účet)
CheckedPrivateAccount
(osobní účet s kontrolou minimálního zůstatku)