⊗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šuMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние користиме колачиња за работата на веб-страната, анализа и персонализација. Обработката на податоци се врши во согласност со Политиката за приватност.
прифати ги сите прилагоди одбиј