⊗ppOpFnMt 64 of 107 menu

Abstracte methoden in OOP in PHP

Abstracte klassen kunnen ook abstracte methoden bevatten. Dergelijke methoden moeten geen implementatie hebben, maar zijn nodig om aan te geven dat dergelijke methoden bij afstammelingen moeten zijn. En de daadwerkelijke implementatie van dergelijke methoden is al de taak van de afstammelingen.

Om een methode abstract te declareren, moet bij de declaratie het sleutelwoord abstract worden geschreven.

Laten we het in de praktijk proberen. Stel dat wordt verondersteld dat alle afstammelingen van de klasse User de methode increaseRevenue moeten hebben.

Deze methode moet het huidige inkomen van de gebruiker nemen en het verhogen met een bepaalde waarde, doorgegeven als parameter.

De klasse User zelf weet niet welk specifiek inkomen de erfgenaam zal krijgen - voor een werknemer is het salaris, en voor een student - een beurs. Daarom zal elke afstammeling deze methode implementeren op zijn eigen manier.

Het punt hier is dat de abstracte methode van de klasse User de programmeur dwingt om deze methode in afstammelingen te implementeren, anders geeft PHP een foutmelding. Op deze manier kun jij, of een andere programmeur die met jouw code werkt, onmogelijk vergeten om de vereiste methode te implementeren in een afstammeling.

Laten we het in de praktijk proberen. Laten we een abstracte methode increaseRevenue toevoegen aan de klasse User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Abstracte methode zonder body: abstract public function increaseRevenue($value); } ?>

Laten we onze klasse Employee voorlopig onveranderd laten. In dit geval, zelfs als er geen object van de klasse Employee wordt gemaakt, maar simpelweg de code wordt uitgevoerd waarin onze klassen worden gedefinieerd - zal PHP een foutmelding geven.

Laten we nu de implementatie van de methode increaseRevenue schrijven in de klasse Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Schrijven we de implementatie van de methode: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Laten we de werking van onze klasse testen:

<?php $employee = new Employee; $employee->setName('john'); $employee->setSalary(1000); $employee->increaseRevenue(100); echo $employee->getSalary(); ?>

Laten we de methode increaseRevenue ook implementeren in de klasse Student. Alleen zal onze methode nu de beurs verhogen:

<?php class Student extends User { private $scholarship; // beurs public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Methode verhoogt de beurs: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Voeg dezelfde abstracte methode increaseRevenue toe aan je klasse User. Schrijf de implementatie van deze methode in de klassen Employee en Student.

Maak in de klasse Figure abstracte methoden voor het verkrijgen van de oppervlakte en omtrek van de figuur.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren