Dziedziczenie w PHP

Dziedziczenie jest jedną z najbardziej istotnych cech projektowania zorientowanego obiektowo. Na czym ono polega?

Jeżeli zdefiniujemy już pewną klasę w PHP, to gdy zajdzie potrzeba zbudowania klasy bardziej rozbudowanej, to możemy zwyczajnie rozszerzyć stworzoną już klasę o nowe pola i metody, bez konieczności powielania kodu już zdefiniowanych pól i metod.

Używamy przy tym następującej składni:

class klasa_potomna extends klasa_bazowa
{
//kod klasy (nowe pola i metody)
}

W ten sposób tworzymy całą hierarchię klas, klasy bazowe i potomne.

Przykład 1

Utworzymy dwie klasy: bazową -

<?php
// --- klasa bazowa
class Konto
{
private $numer;
function __construct($s)
{
$this->numer = $s;
}
public function setNumer($wartosc)
{
$this->numer = $wartosc;
}
public function getNumer()
{
return $this->numer;
}
}
// --- Klasa potomna
class Klient extends Konto
{
private $ime;
private $nazwisko;
function __construct($i,$n)
{
$this->imie = $i;
$this->nazwisko = $n;
}
public function setImie($wartosc)
{
$this->imie = $wartosc;
}
public function getImie()
{
return $this->imie;
}
public function setNazwisko($wartosc)
{
$this->nazwisko = $wartosc;
}
public function getNazwisko()
{
return $this->nazwisko;
}
}
$konto1 = new Klient('Jan','Kowalski');
$konto1->setNumer('23 123 0000 445634 33');
echo 'Numer konta: '.$konto1->getNumer().'<br>';
echo 'Imię właściciela: '.$konto1->getImie().'<br>';
echo 'Nazwisko właściciela: '.$konto1->getNazwisko().'<br>'; ?>

Omówmy ten przykład.

Najpierw definiujemy klasę Konto, która posiada jedno pole prywatne - numer konta (numer). Klasa posiada konstruktor i metody odczytu i zapisu wartości pola.

Następnie budujemy klasę Klient, która posiada pola imię i nazwisko klienta (imie, nazwisko). Tu również jest utworzony konstruktor i zdefiniowane metody odczytu i zapisu wartości obu pól. W tej klasie użyliśmy jednak słowa kluczowego extends, co oznacza, że klasa Klient rozszerza klasę Konto.

W ostatnich linijkach kodu tworzymy obiekt w klasie Klient z konkretnymi danymi osobowymi i numerem konta, ale zauważ, że robimy to z poziomu klasy Klient, a nie klasy Konto. Metoda setNumer() jest dostępna w obu klasach, mimo, że jej definicji nie ma w klasie Klient!

To jest właśnie magia programowania obiektowego.





© medianauka.pl, 2021-12-02, ART-4291





Polecamy w naszym sklepie

Kolorowe skarpetki Miasto
Kolorowe skarpetki - football piłka nożna
Kolorowe skarpetki Kostka
Matematyka konkretna
kolorowe skarpetki góra lodowa
Niektóre treści nie są dostosowane do Twojego profilu. Jeżeli jesteś pełnoletni możesz wyrazić zgodę na przetwarzanie swoich danych osobowych. W ten sposób będziesz miał także wpływ na rozwój naszego serwisu.
© ® Media Nauka 2008-2022 r.