⊗ppOpFnMt 64 of 107 menu

Abstraktās metodes OOP PHP

Abstraktajās klasēs var būt arī abstraktas metodes. Šādām metodēm nevajadzētu būt implementācijai, un tās ir nepieciešamas, lai norādītu, ka šādām metodēm jābūt mantiniekiem. Un pašu šo metožu implementācija jau ir mantinieku uzdevums.

Lai deklarētu metodi kā abstraktu, tās deklarēšanas laikā jāraksta atslēgvārds abstract.

Izmēģināsim praksē. Pieņemsim, ka visām klases User mantiniecēm jābūt metodei increaseRevenue.

Šai metodei jāpaņem pašreizējie lietotāja ienākumi un jāpalielina tos par noteiktu vērtību, kas nodota parametrā.

Pati klase User nezina, kādi tieši ienākumi būs mantiniekam - jo darbiniekam tā ir alga, bet studentam - stipendija. Tāpēc katrs mantinieks implementēs šo metodi savā veidā.

Būtība ir tāda, ka abstraktā klases User metode liek programmētājam implementēt šo metodi mantiniekos, pretējā gadījumā PHP izvadīs kļūdu. Tādējādi jūs vai cits programmētājs, kas strādā ar jūsu kodu, nekādā veidā nevarēs aizmirst implementēt nepieciešamo metodi mantiniekā.

Tātad, izmēģināsim praksē. Pievienosim abstrakto metodi increaseRevenue klasei User:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Abstraktā metode bez ķermeņa: abstract public function increaseRevenue($value); } ?>

Lai mūsu klase Employee pagaidām paliek bez izmaiņām. Šajā gadījumā, pat ja neveido klases Employee objektu, bet vienkārši palaiž kodu, kurā tiek definētas mūsu klases, - PHP izvadīs kļūdu.

Tagad uzrakstīsim metodes increaseRevenue implementāciju klasē Employee:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Uzrakstīsim metodes implementāciju: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Pārbaudīsim mūsu klases darbību:

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

Implementēsim metodi increaseRevenue un klasē Student. Tikai tagad mūsu metode palielinās jau stipendiju:

<?php class Student extends User { private $scholarship; // stipendija public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Metode palielina stipendiju: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

Pievienojiet savai klasei User tādu pašu abstrakto metodi increaseRevenue. Uzrakstiet šīs metodes implementāciju klasēs Employee un Student.

Klasē Figure izveidojiet abstraktas metodes figūras laukuma un perimetra iegūšanai.

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt