⊗ppOpFnCl 63 of 107 menu

Abstrakte klasser i OOP i PHP

La oss si at du har en klasse User, og at den arves av klassene Employee og Student.

Samtidig forutsettes det at du vil opprette objekter av klassene Employee og Student, men objekter av klassen User - vil du ikke, siden denne klassen bare brukes for å gruppere felles egenskaper og metoder for sine arvinger.

I dette tilfellet kan man tvingende forby opprettelse av objekter av klassen User, slik at du eller en annen programmerer et sted ikke ved et uhell skulle opprette dem.

For dette finnes det såkalte abstrakte klasser. Abstrakte klasser er klasser som er beregnet på arving fra dem. Samtidig kan man ikke opprette objekter av slike klasser.

For å deklarere en klasse som abstrakt, må man skrive nøkkelordet abstract ved deklarasjonen:

<?php abstract class User { } ?>

Så, la oss skrive implementasjonen av en abstrakt klasse User. La den ha en privat egenskap 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øk på å opprette et objekt av klassen User vil forårsake en feil:

<?php $user = new User; // vil gi en feil ?>

Derimot vil det være mulig å arve fra klassen vår. La oss lage en klasse Employee som arver fra vår abstrakte klasse User:

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

La oss opprette et objekt av klassen Employee - alt vil fungere:

<?php $employee = new Employee; $employee->setName('john'); // forelderens metode, dvs. klassen User $employee->setSalary(1000); // egen metode, dvs. klassen Employee echo $employee->getName(); // vil skrive ut 'john' echo $employee->getSalary(); // vil skrive ut 1000 ?>

Lag en abstrakt klasse Figure, som representerer en geometrisk figur. La klasser for sirkel, rektangel og kvadrat arve fra den.

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