⊗ppOpFnCl 63 of 107 menu

Abstrakte klasser i OOP i PHP

Lad os sige, at du har en klasse User, og fra den arver klassene Employee og Student.

Samtidig forudsættes det, at du vil oprette objekter af klassene Employee og Student, men objekter af klassen User - vil du ikke, da denne klasse kun bruges til grupning af fælles egenskaber og metoder for dens arvinger.

I dette tilfælde kan man tvingende forbyde oprettelse af objekter af klassen User, så du eller en anden programmør et eller andet sted ikke ved et uheld opretter dem.

Til dette findes såkaldte abstrakte klasser. Abstrakte klasser er klasser, der er beregnet til arv fra dem. Samtidig kan man ikke oprette objekter af sådanne klasser.

For at erklære en klasse abstrakt, skal man ved dens erklæring skrive nøgleordet abstract:

<?php abstract class User { } ?>

Så lad os skrive implementeringen af den abstrakte klasse User. Lad den have en privat egenskab name, samt gettere og settere for den:

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

Et forsøg på at oprette et objekt af klassen User vil forårsage en fejl:

<?php $user = new User; // vil give en fejl ?>

Derimod vil det være muligt at arve fra vores klasse. Lad os lave klassen Employee, som vil arve fra vores abstrakte klasse User:

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

Lad os oprette et objekt af klassen Employee - alt vil fungere:

<?php $employee = new Employee; $employee->setName('john'); // forældermetode, dvs. fra klassen User $employee->setSalary(1000); // egen metode, dvs. fra klassen Employee echo $employee->getName(); // vil udskrive 'john' echo $employee->getSalary(); // vil udskrive 1000 ?>

Lav en abstrakt klasse Figure, der repræsenterer en geometrisk figur. Lad klasser for cirkel, rektangel og kvadrat arve fra den.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis