Java: Abstraktní třídy, dědičnost a rozhraní

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Přidána kapitola ke klíčovému slovu super. Přehozeno rozhraní a abstraktní třída.)
(Přidáno přetypování a příklad.)
Řádka 38: Řádka 38:
 
* Pokud potřebujeme v potomkovi přesto použít metodu předka, použijeme k tomu klíčové slovo <code>super</code>.
 
* Pokud potřebujeme v potomkovi přesto použít metodu předka, použijeme k tomu klíčové slovo <code>super</code>.
 
* Klíčovým slovem <code>super</code> lze také zavolat konstruktor předka.
 
* Klíčovým slovem <code>super</code> lze také zavolat konstruktor předka.
 +
 +
 +
== Přetypování ==
 +
* Potomek může vždy zastoupit předka. Do proměnné datového typu předka tedy můžeme uložit instanci třídy potomka.
 +
* Jsou ale situace, kdy potřebujeme k takto uloženému potomkovi znovu přistupovat jako k potomkovi včetně všech jeho metod a atributů.
 +
* V tom případě musíme použít přetypování.
 +
 +
* Přetypování zapíšeme tak, že do závorky před výraz, který vrací takto uloženého potomka, zapíšeme název třídy předka:
 +
 +
Prekazka prekazka = '''(Prekazka)''' this.getOneIntersectingObject(Prekazka.class);
 +
if (prekazka != null) {
 +
    int prekazka.getPruhlednost();
 +
    ...
 +
}
 +
 +
<div class="Varovani">Pozor, musíme si být stoprocentně jisti, že objekt, který je uložen v proměnné datového typu <code>Predek</code> je ve skutečnosti opravdu datového typu <code>Potomek</code>. Pokud by nebyl, běh programu by skončil výjimečný stavem a aplikace by havarovala.</div>
  
  
 
== Související stránky ==
 
== Související stránky ==
 
* [[Objektově orientované programování]]
 
* [[Objektově orientované programování]]

Verze z 28. 2. 2017, 10:15


Obsah

Dědičnost

Příklad
public class Kamion {
    int nosnost;
    ...
    public int getNosnost() { return this.nosnost; }
    ...
}
public class KamionSPrivesem extends Kamion {
    Prives prives;
    ...
    public int getNosnost() { 
        return this.getHodnota()+this.prives.getHodnota(); 
    }
    ...
}


Rozhraní


Abstraktní třída


Odkaz na předka — super


Přetypování

Prekazka prekazka = (Prekazka) this.getOneIntersectingObject(Prekazka.class);
if (prekazka != null) {
    int prekazka.getPruhlednost();
    ...
}
Pozor, musíme si být stoprocentně jisti, že objekt, který je uložen v proměnné datového typu Predek je ve skutečnosti opravdu datového typu Potomek. Pokud by nebyl, běh programu by skončil výjimečný stavem a aplikace by havarovala.


Související stránky

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje