⊗ppOpFnMt 64 of 107 menu

Abstraktsed meetodid OOP-s PHP-s

Abstraktsed klassid võivad sisaldada ka abstraktsed meetodid. Sellistel meetoditel ei pea olema implementatsiooni, vaid need on vajalikud selleks, et näidata, et sellised meetodid peaksid olema järglastel. Ja tegelik selliste meetodite implementeerimine - on juba järglaste ülesanne.

Selleks, et deklareerida meetod abstraktsena, tuleb selle deklareerimisel kirjutada võtmesõna abstract.

Proovime praktiliselt. Oletame, et eeldatakse, et kõik klassi User järglased peaksid omama meetodit increaseRevenue.

See meetod peaks võtma kasutaja praeguse tulu ja suurendama seda mingi väärtuse võrra, mis edastatakse parameetrina.

Klass User ise ei tea, millist täpselt tulu järglane saab - sest töötajal on see palk, aga üliõpilasel - stipendium. Seetõttu iga järglane implementeerib selle meetodi omamoodi.

Asja iva on selles, et abstraktne meetod klassis User sunnib programmeerijat implementeerima selle meetodi järglastes, vastasel juhul annab PHP vea. Nii teie, või teine programmeerija, kes teie koodiga töötab, ei suuda kuidagi unustada vajaliku meetodi implementeerimist järglases.

Nii, proovime praktiliselt. Lisame abstraktse meetodi increaseRevenue klassi User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Abstraktne meetod ilma kehata: abstract public function increaseRevenue($value); } ?>

Olgu meie klass Employee jääb esialgu muutmata. Sel juhul, isegi kui ei loo klassi Employee objekti, vaid lihtsalt käivitada kood, kus defineeritakse meie klassid, - annab PHP vea.

Kirjutame nüüd meetodi increaseRevenue implementatsiooni klassis Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Kirjutame meetodi implementatsiooni: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Kontrollime meie klassi tööd:

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

Implementeerime meetodi increaseRevenue ka klassis Student. Ainult nüüd meie meetod suurendab juba stipendiumi:

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

Lisage oma klassi User samasugune abstraktne meetod increaseRevenue. Kirjutage selle meetodi implementatsioon klassidesse Employee ja Student.

Klassis Figure tehke abstraktsed meetodid kujundi pindala ja perimeetri saamiseks.

Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu