⊗ppOpFnMt 64 of 107 menu

Metode abstracte în OOP în PHP

Clasele abstracte pot conține de asemenea metode abstracte. Astfel de metode nu trebuie să aibă implementare, ci sunt necesare pentru a indica că astfel de metode trebuie să existe la clasele descendente. Iar implementarea acestor metode - este deja sarcina claselor descendente.

Pentru a declara o metodă ca abstractă, la declararea ei trebuie scris cuvântul cheie abstract.

Să încercăm în practică. Să presupunem că toate clasele descendente ale clasei User trebuie să aibă metoda increaseRevenue.

Această metodă ar trebui să ia venitul curent al utilizatorului și să îl mărească cu o anumită valoare, transmisă ca parametru.

Însăși clasa User nu știe, ce anume venit va avea clasa descendentă - la un angajat acesta este salariul, iar la un student - bursa. Prin urmare fiecare descendent va implementa această metodă în mod propriu.

Esenta constă în faptul că metoda abstractă a clasei User forțează programatorul să implementeze această metodă în clasele descendente, altfel PHP va afișa o eroare. Astfel, dvs., sau alt programator, care lucrează cu codul dvs., nu veți putea uita în niciun fel să implementați metoda necesară în clasa descendentă.

Așadar, să încercăm în practică. Să adăugăm metoda abstractă increaseRevenue în clasa User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Metodă abstractă fără corp: abstract public function increaseRevenue($value); } ?>

Să presupunem că clasa noastră Employee rămâne temporar fără modificări. În acest caz, chiar dacă nu creăm un obiect al clasei Employee, ci doar rulăm codul în care sunt definite clasele noastre, - PHP va afișa o eroare.

Acum să scriem implementarea metodei increaseRevenue în clasa Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Să scriem implementarea metodei: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Să verificăm funcționarea clasei noastre:

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

Să implementăm metoda increaseRevenue și în clasa Student. Doar că acum metoda noastră va mări deja bursa:

<?php class Student extends User { private $scholarship; // bursa public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Metoda mărește bursa: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Adăugați în clasa dvs. User aceeași metodă abstractă increaseRevenue. Scrieți implementarea acestei metode în clasele Employee și Student.

În clasa Figure faceți metode abstracte pentru obținerea ariei și perimetrului figurii.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge