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

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Přidáno přetypování a příklad.)
(Přetypování: Přidán příklad přetypování s GUI SWING)
Řádka 45: Řádka 45:
 
* V tom případě musíme použít přetypování.
 
* 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:
+
* 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.
 +
 
 +
; Příklady přetypování
 +
* Greenfoot a detekce kolize s konkrétním typem aktéra
  
 
  Prekazka prekazka = '''(Prekazka)''' this.getOneIntersectingObject(Prekazka.class);
 
  Prekazka prekazka = '''(Prekazka)''' this.getOneIntersectingObject(Prekazka.class);
Řádka 53: Řádka 56:
 
  }
 
  }
  
<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>
+
* GUI pomocí knihovny Swing &mdash; zjištění zdroje události
  
 +
public void actionPerformed(ActionEvent event) {
 +
    Button zdroj = '''(Button)''' event.getSource();
 +
    zdroj.getTitle();
 +
    ...
 +
}
 +
 +
<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, 12:32


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í

Příklady přetypování
Prekazka prekazka = (Prekazka) this.getOneIntersectingObject(Prekazka.class);
if (prekazka != null) {
    int prekazka.getPruhlednost();
    ...
}
public void actionPerformed(ActionEvent event) {
    Button zdroj = (Button) event.getSource();
    zdroj.getTitle();
    ...
}
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