⊗ppOpFnMt 64 of 107 menu

Abstrakte metoder i OOP i PHP

Abstrakte klasser kan også indeholde abstrakte metoder. Sådanne metoder bør ikke have implementering, men er nødvendige for at angive, at sådanne metoder skal være i nedarvede klasser. Og selve implementeringen af sådanne metoder - er allerede opgaven for de nedarvede klasser.

For at erklære en metode abstrakt, skal du skrive nøgleordet abstract ved dens erklæring.

Lad os prøve det i praksis. Antag, at alle nedarvede klasser af klassen User skal have metoden increaseRevenue.

Denne metode skal tage brugerens nuværende indkomst og forøge den med en vis værdi, overført som parameter.

Klassen User selv ved ikke, hvilken specifik indkomst den nedarvede klasse vil have - for en medarbejder er det en løn, mens for en studerende er det et stipendium. Derfor vil hver nedarvet klasse implementere denne metode på sin egen måde.

Pointen her er, at den abstrakte metode i klassen User tvinger programmøren til at implementere denne metode i de nedarvede klasser, ellers vil PHP give en fejl. På denne måde kan du, eller en anden programmør, der arbejder med din kode, på ingen måde glemme at implementere den nødvendige metode i den nedarvede klasse.

Så lad os prøve det i praksis. Lad os tilføje en abstrakt metode increaseRevenue til klassen User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Abstrakt metode uden krop: abstract public function increaseRevenue($value); } ?>

Lad vores klasse Employee forblive uændret for nu. I dette tilfælde, selvom der ikke oprettes et objekt af klassen Employee, men blot kører koden, hvor vores klasser defineres, - vil PHP give en fejl.

Lad os nu skrive implementeringen af metoden increaseRevenue i klassen Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Lad os skrive implementeringen af metoden: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Lad os kontrollere vores klasse fungerer:

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

Lad os implementere metoden increaseRevenue og i klassen Student. Kun nu vil vores metode forøge stipendiet:

<?php class Student extends User { private $scholarship; // stipendium public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Metoden forøger stipendiet: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Tilføj til din klasse User den samme abstrakte metode increaseRevenue. Skriv implementeringen af denne metode i klassene Employee og Student.

I klassen Figure lav abstrakte metoder til at få figurens areal og omkreds.

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