⊗ppOpFnCl 63 of 107 menu

Abstraktsed klassid OOP-s PHP-s

Oletame, et teil on klass User, ja sellest päritavad klassid Employee ja Student.

Samal ajal eeldatakse, et te loote klasside Employee ja Student objekte, kuid klassi User objekte - ei, kuna seda klassi kasutatakse ainult oma pärijate üldiste omaduste ja meetodite grupistamiseks.

Sellisel juhul saab sundkeelustada klassi User objektide loomise, et teie või mõni teine programmeerija kuskil neid kogemata ei loeks.

Selleks on olemas nn abstraktsed klassid. Abstraktsed klassid on klassid, mis on mõeldud nendelt pärimiseks. Samal ajal ei saa selliste klasside objekte luua.

Selleks, et kuulutada klass abstraktseks, peab selle deklaratsioonil kirjutama võtmesõna abstract:

<?php abstract class User { } ?>

Niisiis, kirjutame välja abstraktse klassi User realisatsiooni. Olgu sellel privaatne omadus name, ning ka selle jaoks getterid ja setterid:

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

Katse luua klassi User objekt põhjustab vea:

<?php $user = new User; // annab vea ?>

Kuid meie klassilt pärimine on võimalik. Teeme klassi Employee, mis pärib meie abstraktsest klassist User:

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

Loome klassi Employee objekti - kõik töötab:

<?php $employee = new Employee; $employee->setName('john'); // vanema meetod, st klassi User meetod $employee->setSalary(1000); // oma meetod, st klassi Employee meetod echo $employee->getName(); // väljastab 'john' echo $employee->getSalary(); // väljastab 1000 ?>

Tehke abstraktne klass Figure, mis esindab geomeetrilist kujundit. Olgu sellest päritavad klassid ringi, ristküliku ja ruudu jaoks.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu