OOP v PHP: Abstraktní třída

15. února 2006

Abstraktní třída (abstrakce) je třída, která obsahuje jak abstraktní metody, tak hotové metody. Abstraktní třídy nesmí vytvářet instance, mohou být ale děděny a jejich potomci po implementaci potřebných metod instance vytvářet mohou. Metody označené jako abstrakní nemohou definovat obsah, pouze specifikují název a případné argumenty.

Třídy, které následně abstraktní metody zahrnují a dále uvádějí jejich definici, musí být označeny s viditelností stejnou nebo menší než abstraktní metody. Je-li tedy metoda v abstraktní třídě označena jeko protected, potomek abstraktní třídy může metodu uvádět jako public nebo protected.

Třída, která obsahuje alespoň jednu abstraktní metodu, musí být uváděna klíčovým slovem abstract.

<?php 
  abstract class AbstraktniTrida { 
    public function NormalniMetoda(){ 
      echo 'Tohle je normální metoda'; 
    } 
    abstract protected function AbstraktniMetoda(); 
  } 

  class Potomek extends Abstraktnitrida { 
    public function AbstraktniMetoda(){ 
      echo 'Tohle je abstraktní metoda'; 
    } 
  } 

  $ins = new Potomek; 
  $ins->NormalniMetoda(); 
  $ins->AbstraktniMetoda(); 

?>

Příklad nejprve uvádí abstraktní třídu, která obsahuje jednu klasickou metodu a jednu abstraktní. Třída je následně děděna a její potomek definuje abstraktní třídu.

Pozn. red.: Zdůrazňujeme, že tento text se týká PHP 5.

Předchozí článek OOP v PHP: Objektové rozhraní
Další článek OOP v PHP: Vzor Factory
Štítky: oop-php

Mohlo by vás také zajímat

Nejnovější

2 komentářů

  1. ereste

    Bře 26, 2014 v 16:19

    Aký má zmysel? Naslôedujúci kód funguje rovnako:

    class NeAbstraktniTrida {
    public function NormalniMetoda(){
    echo ‚Tohle je normální metoda‘;
    }
    }

    class Potomek extends NeAbstraktnitrida {
    public function NeAbstraktniMetoda(){
    echo ‚Tohle je abstraktní metoda‘;
    }
    }

    $ins = new Potomek;
    $ins->NormalniMetoda();
    $ins->NeAbstraktniMetoda();

    Odpovědět
  2. d.b.cooper

    Kvě 15, 2015 v 14:10

    tak ted na to cumim .. hlavni je aby to bylo logicky :D … ono to urcite nejakou logiku ma ale tady urcite neni popsana .. priklad k nicemu :/

    Odpovědět

Napsat komentář: ereste Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *