⊗ppOpFnMt 64 of 107 menu

Апстрактне методе у ООП у PHP

Апстрактне класе могу такође садржати апстрактне методе. Такве методе не би требало да имају имплементацију, већ служе да укажу да такве методе морају да имају њихови потомци. А саму имплементацију тих метода - то је већ задатак потомака.

Да би се декларисала метода као апстрактна, приликом њеног декларисања треба написати кључну реч abstract.

Хајде да испробамо у пракси. Претпоставимо, да сви потомци класе User треба да имају методу increaseRevenue.

Ова метода треба да узме тренутни приход корисника и да га увећа за неку вредност, која је прослеђена као параметар.

Сама класа User не зна, који тачно приход ће добијати њен наследник - јер код запосленог то је плата, а код студента - стипендија. Зато ће сваки потомак имплементирати ову методу на свој начин.

Поента је у томе, да апстрактна метода класе User приморава програмера да имплементира ову методу у потомцима, иначе ће PHP приказати грешку. На тај начин ви, или други програмер, који ради са вашим кодом, никако нећете моћи да заборавите да имплементирате потребну методу у потомку.

Дакле, хајде да испробамо у пракси. Додајмо апстрактну методу increaseRevenue у класу User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Апстрактна метода без тела: abstract public function increaseRevenue($value); } ?>

Нека наша класа Employee за сада остане непромењена. У овом случају, чак и ако се не креира објекат класе Employee, већ само се покрене код, у коме се дефинишу наше класе, - PHP ће приказати грешку.

Хајде сада да напишемо имплементацију методе increaseRevenue у класи Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Напишимо имплементацију методе: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Проверимо рад наше класе:

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

Имплементирајмо методу increaseRevenue и у класи Student. Само ће сада наша метода увећавати већ стипендију:

<?php class Student extends User { private $scholarship; // стипендија public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Метода увећава стипендију: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Додајте у вашу класу User такође апстрактну методу increaseRevenue. Напишите имплементацију те методе у класама Employee и Student.

У класи Figure направите апстрактне методе за добијање површине и периметра фигуре.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј