⊗ppOpFnMt 64 of 107 menu

Abstrakta metoder i OOP i PHP

Abstrakta klasser kan också innehålla abstrakta metoder. Sådana metoder bör inte ha någon implementering, utan behövs för att ange att sådana metoder måste finnas i avkomlingar. Och själva implementeringen av sådana metoder - är redan en uppgift för avkomlingar.

För att deklarera en metod som abstrakt, ska man skriva nyckelordet abstract vid dess deklaration.

Låt oss prova i praktiken. Låt oss anta att alla avkomlingar av klassen User måste ha metoden increaseRevenue.

Denna metod bör ta användarens nuvarande inkomst och öka den med ett visst belopp, som skickas som en parameter.

Själva klassen User vet inte exakt vilken inkomst arvtagaren kommer att ha - för en anställd är det lön, medan för en student är det stipendium. Därför kommer varje avkomling att implementera denna metod på sitt eget sätt.

Poängen här är att den abstrakta metoden i klassen User tvingar programmeraren att implementera denna metod i avkomlingar, annars kommer PHP att ge ett fel. På så sätt kan du, eller en annan programmerare, som arbetar med din kod, på inget sätt glömma att implementera den nödvändiga metoden i avkomlingen.

Så, låt oss prova i praktiken. Låt oss lägga till en abstrakt metod increaseRevenue i klassen User:

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

Låt vår klass Employee förbli oförändrad för nu. I det här fallet, även om vi inte skapar ett objekt av klassen Employee, utan bara kör koden där våra klasser definieras, kommer PHP att ge ett fel.

Låt oss nu skriva implementationen av 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; } // Låt oss skriva implementationen av metoden: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Låt oss kontrollera hur vår klass fungerar:

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

Låt oss implementera metoden increaseRevenue också i klassen Student. Bara att nu kommer vår metod att öka stipendiet:

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

Lägg till i din klass User en likadan abstrakt metod increaseRevenue. Skriv implementationen av denna metod i klasserna Employee och Student.

Gör i klassen Figure abstrakta metoder för att få figurens area och omkrets.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa