⊗ppOpFnCl 63 of 107 menu

Klasy abstrakcyjne w OOP w PHP

Załóżmy, że masz klasę User, a od niej dziedziczą klasy Employee i Student.

Przy tym zakłada się, że będziesz tworzyć obiekty klas Employee i Student, ale obiektów klasy User - nie będziesz, ponieważ ta klasa jest używana tylko do grupowania wspólnych właściwości i metod swoich potomków.

W tym przypadku można wymusić zakaz tworzenia obiektów klasy User, aby ty lub inny programista gdzieś ich przypadkowo nie utworzyli.

Do tego służą tak zwane klasy abstrakcyjne. Klasy abstrakcyjne reprezentują klasy przeznaczone do dziedziczenia od nich. Przy tym obiektów takich klas nie można utworzyć.

Aby zadeklarować klasę jako abstrakcyjną, należy przy jej deklaracji napisać słowo kluczowe abstract:

<?php abstract class User { } ?>

A więc, napiszmy implementację klasy abstrakcyjnej User. Niech ma ona prywatną właściwość name, a także gettery i settery dla niej:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } } ?>

Próba utworzenia obiektu klasy User spowoduje błąd:

<?php $user = new User; // zwróci błąd ?>

Ale dziedziczenie od naszej klasy będzie możliwe. Stwórzmy klasę Employee, która będzie dziedziczyć po naszej klasie abstrakcyjnej User:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } } ?>

Stwórzmy obiekt klasy Employee - wszystko będzie działać:

<?php $employee = new Employee; $employee->setName('john'); // metoda rodzica, tj. klasy User $employee->setSalary(1000); // własna metoda, tj. klasy Employee echo $employee->getName(); // wypisze 'john' echo $employee->getSalary(); // wypisze 1000 ?>

Stwórz klasę abstrakcyjną Figure, reprezentującą figurę geometryczną. Niech po niej dziedziczą klasy dla koła, prostokąta i kwadratu.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć