<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sk">
	<id>http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=Java_-_abstraktn%C3%A9_triedy</id>
	<title>Java - abstraktné triedy - História úprav</title>
	<link rel="self" type="application/atom+xml" href="http://www.kiwiki.info/index.php?action=history&amp;feed=atom&amp;title=Java_-_abstraktn%C3%A9_triedy"/>
	<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Java_-_abstraktn%C3%A9_triedy&amp;action=history"/>
	<updated>2026-04-16T12:46:50Z</updated>
	<subtitle>História úprav pre túto stránku na wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>http://www.kiwiki.info/index.php?title=Java_-_abstraktn%C3%A9_triedy&amp;diff=8431&amp;oldid=prev</id>
		<title>Juraj: Vytvorená stránka „{{Navigacne menu - java}} {{Draft}} Abstraktné triedy sa využívajú na definovanie spoločných charakterových rysov podtried. Z abstraktnej triedy sa nedá vytvoriť i…“</title>
		<link rel="alternate" type="text/html" href="http://www.kiwiki.info/index.php?title=Java_-_abstraktn%C3%A9_triedy&amp;diff=8431&amp;oldid=prev"/>
		<updated>2010-12-01T21:31:41Z</updated>

		<summary type="html">&lt;p&gt;Vytvorená stránka „{{Navigacne menu - java}} {{Draft}} Abstraktné triedy sa využívajú na definovanie spoločných charakterových rysov podtried. Z abstraktnej triedy sa nedá vytvoriť i…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Navigacne menu - java}}&lt;br /&gt;
{{Draft}}&lt;br /&gt;
Abstraktné triedy sa využívajú na definovanie spoločných charakterových rysov podtried. Z abstraktnej triedy sa nedá vytvoriť inštancia (objekt). Môže použiť len ako generická trieda pre ostatné triedy, ktoré ju budú rozširovať.&lt;br /&gt;
==Definícia abstrakcie==&lt;br /&gt;
Abstraktná trieda sa deklaruje pomocou kľúčového slova ''abstract'' Abstraktrné triedy sa využívajú ako šablóny pre konkrétne podtriedy.&lt;br /&gt;
Tak ako Každá iná trieda, aj abstraktrná trieda môže obsahovať vlastnosti a metódy, ktoré definujú správanie triedy. &lt;br /&gt;
&lt;br /&gt;
Abstraktná trieda môže taktiež obsahovať metódy bez implementácie. Takéto metódy sa nazývajú '''abstraktné metódy'''. Deklarácia abstraktnej metódy musí začínať kľúčovým slovom abstract a za názvom funkcie (a parametrami) nesmie byť telo, ale musí tam byť bodkočiarka. &lt;br /&gt;
&lt;br /&gt;
Ak trieda obsahuje nejaké abstraktné metódy, buď deklarované v aktuálnej triede, alebo zdedené, musí byť deklarovaná ako abstraktná. Abstrakné metódy poskytujú určitú šablónu pre triedy, ktoré sú z pôvodnej (abstraktnej) triedy odvodené.&lt;br /&gt;
&lt;br /&gt;
Z abstraktných tried sa nedajú vytvárať objekty. Abstaktné triedy musia byť použité ako triedy rodičov. Triedy, ktoré sú potomkami abstraktnej triedy buď musia abstraktné metódy implementovať, alebo ich zdedia ako abstatkné a samotná trieda potomka sa stáva abstraktnou&amp;lt;ref&amp;gt;Java Abstract class and Interface - http://www.javabeginner.com/learn-java/java-abstract-class-and-interface&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Príklad abstraktnej triedy:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
abstract class GraphicObject {&lt;br /&gt;
    int x, y;&lt;br /&gt;
    ...&lt;br /&gt;
    void moveTo(int newX, int newY) {&lt;br /&gt;
        ...&lt;br /&gt;
    }&lt;br /&gt;
    abstract void draw();&lt;br /&gt;
    abstract void resize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Vysvetlenie k predchádzajúcemu zdrojovému kódu:&lt;br /&gt;
*Trieda GraphicsObject je abstrakná&lt;br /&gt;
*Obsahuje 2 abstraktné metódy: draw a resize&lt;br /&gt;
*Metóda moveTo nie je abstraktná (má svoju implementáciu)&lt;br /&gt;
&lt;br /&gt;
==Príklad abstraktnej triedy==&lt;br /&gt;
Zoberme si už preberaný príklad so živočíšnymi druhmi: Zviera-Cicavec-Mačka-Plaz-Vtak. Keďže nemá zmysel vytvárať obejekt typu Zviera, triedu zviera budeme definovať ako abstraktnú:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public abstract class Zviera {&lt;br /&gt;
    public String nazov;&lt;br /&gt;
    public int vaha;&lt;br /&gt;
 &lt;br /&gt;
    public Zviera()&lt;br /&gt;
    {&lt;br /&gt;
        this(&amp;quot;Zviera&amp;quot;,0);&lt;br /&gt;
    }&lt;br /&gt;
    public Zviera(String nazov, int vaha) {&lt;br /&gt;
        this.nazov = nazov;&lt;br /&gt;
        this.vaha = vaha;&lt;br /&gt;
    }&lt;br /&gt;
    // abstaktné metódy&lt;br /&gt;
    public abstract void pohniSa(int k);&lt;br /&gt;
    public abstract void prijmiPotravu(int mnozstvo);&lt;br /&gt;
    public abstract void rozmnozujSa();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Teraz je trieda Zviera abstraktná a už nie je možné vytvárať objekt typu Zviera (Zviera z= new Zviera() ). Ale je možné použiť odkaz ma obejkt typu Zviera pri použití polymorfizmu ( Zviera p= new Plaz() ).&lt;br /&gt;
Na to, aby celý náš zverinec fungoval treba doplniť triedy Cicavec, Pes, Plaz a Vtak o všetky abstraktné metódy, ktoré zdedili. Toto ilustruje nasledujúci obrázok:&lt;br /&gt;
[[Súbor:java-abstract1.png|frame|center|Požiadavka na implementovanie všetkých zdedených abstraktným metód]]&lt;br /&gt;
&lt;br /&gt;
Trieda Cicavec po doplnení vyzerá nasledovne:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Cicavec extends Zviera{&lt;br /&gt;
    public int dlzka_gravidity;&lt;br /&gt;
    public String typ_srsti;&lt;br /&gt;
&lt;br /&gt;
    public Cicavec() {&lt;br /&gt;
        super(&amp;quot;Cicavec&amp;quot;,1);&lt;br /&gt;
        this.dlzka_gravidity = 7;&lt;br /&gt;
        this.typ_srsti = &amp;quot;&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    // ostatné metódy sú nezmenené&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void prijmiPotravu(int mnozstvo) {&lt;br /&gt;
         System.out.println(&amp;quot;Cicavec zozral &amp;quot;+mnozstvo+&amp;quot; kg potravy&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void rozmnozujSa() {&lt;br /&gt;
        System.out.println(&amp;quot;Cicavec sa rozmnožuje&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Podobne triedy Vtak a Plaz budú vyzerať nasledovne:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class Vtak extends Zviera {&lt;br /&gt;
    public float rozpatie_kridel;&lt;br /&gt;
    public int pocet_vajec;&lt;br /&gt;
&lt;br /&gt;
    public Vtak()&lt;br /&gt;
    {&lt;br /&gt;
        super(&amp;quot;Vtak&amp;quot;,3);&lt;br /&gt;
        this.rozpatie_kridel = 0;&lt;br /&gt;
        this.pocet_vajec = 8;&lt;br /&gt;
    }&lt;br /&gt;
    // ostatné metódy sú nezmenené&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void prijmiPotravu(int mnozstvo) {&lt;br /&gt;
         System.out.println(&amp;quot;Vtak vyzobal &amp;quot;+mnozstvo+&amp;quot; kg zrna&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void rozmnozujSa() {&lt;br /&gt;
        System.out.println(&amp;quot;Vtak sa rozmnožuje kladenim vajec&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
public class Plaz extends Zviera {&lt;br /&gt;
&lt;br /&gt;
    public float dlzka;&lt;br /&gt;
    public String typ;&lt;br /&gt;
&lt;br /&gt;
    public Plaz(String nazov, int vaha, float dlzka, String typ) {&lt;br /&gt;
        super(nazov, vaha);&lt;br /&gt;
        this.dlzka = dlzka;&lt;br /&gt;
        this.typ = typ;&lt;br /&gt;
    }&lt;br /&gt;
    // ostatné metódy sú nezmenené&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void prijmiPotravu(int mnozstvo) {&lt;br /&gt;
         System.out.println(&amp;quot;Plaz prehltol &amp;quot;+mnozstvo+&amp;quot; cicavcov&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    @Override&lt;br /&gt;
    public void rozmnozujSa() {&lt;br /&gt;
        System.out.println(&amp;quot;Plaz sa rozmnožuje&amp;quot;);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Poznámka: Anotácia ''@Override'' označuje, že metóda je preťažená. Ak je metóda označená ako @Override a nepreťažuje žiadnu metódu v nadtriede, kompilátor vygeneruje chybu. Ak anotácia @Override pri preťaženej metóde chýba, kompilátor vygeneruje varovanie.&amp;lt;ref&amp;gt;Annotation Type Override http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Override.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Použite takto upravenej hierarchie tried je podobné ako pri polymorfizme:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public class testZOO {&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
&lt;br /&gt;
        //Zviera z=new Zviera();  CHYBA!!!&lt;br /&gt;
        Zviera c = new Cicavec();&lt;br /&gt;
        Zviera v = new Vtak();&lt;br /&gt;
        Zviera p = new Plaz();&lt;br /&gt;
&lt;br /&gt;
        c.pohniSa(1);&lt;br /&gt;
        v.pohniSa(2);&lt;br /&gt;
        p.pohniSa(3);&lt;br /&gt;
&lt;br /&gt;
        c.prijmiPotravu(2);&lt;br /&gt;
        v.prijmiPotravu(4);&lt;br /&gt;
        p.prijmiPotravu(5);&lt;br /&gt;
&lt;br /&gt;
        c.rozmnozujSa();&lt;br /&gt;
        v.rozmnozujSa();&lt;br /&gt;
        p.rozmnozujSa();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Výstup programu je nasledovný:&lt;br /&gt;
 bežím 1 metrov&lt;br /&gt;
 letim 2 metrov&lt;br /&gt;
 plazím sa 3 metrov&lt;br /&gt;
 Cicavec zozral 2 kg potravy&lt;br /&gt;
 Vtak vyzobal 4 kg zrna&lt;br /&gt;
 Plaz prehltol 5 cicavcov&lt;br /&gt;
 Cicavec sa rozmnožuje&lt;br /&gt;
 Vtak sa rozmnožuje kladenim vajec&lt;br /&gt;
 Plaz sa rozmnožuje&lt;br /&gt;
==Zdroje a odkazy==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Juraj</name></author>
		
	</entry>
</feed>