⊗ppOpIfII 74 of 107 menu

PHPде ООПдо классдан мурастоо жана интерфейсти ишке ашыруу

Класс башка класстан мурас ала алат жана ошол эле учурда кандайдыр бир интерфейсти ишке ашыра алат. Ишкердик мисал менен карап чыгалы.

Биз Programmer классын жасакыбыз келет деп коёлу, анын аты, эмгек акысы жана программист билген тилдердин тизмеси болот. Азырынча биздин класс сүрөттөлүшү бекер эле жайыраак: ооба, классда ат, эмгек акысы, тилдер болот - бирок биздин классда кайсы методдор болот?

Келгиле, биздин классыбызды такыраак iProgrammer интерфейси аркылуу сүрөттөйлү:

<?php interface iProgrammer { public function __construct($name, $salary); public function getName(); public function getSalary(); public function getLangs(); public function addLang($lang); } ?>

Биз мурунтан ишке ашырылган классыбызда казып көрсөк, бизде ушул сыяктуу Employee классты бар экен. Ал Programmer класстын бардык методдорун эмес, бир бөлүгүн гана ишке ашырат. Бизде мурунтан бар болгон класстын коду:

<?php class Employee { private $name; private $salary; public function __construct($name, $salary) { $this->name = $name; $this->salary = $salary; } public function getName() { return $this->name; } public function getSalary() { return $this->salary; } } ?>

Биздин учурда, жаңы Programmer класстын керектүү методдорунун бир бөлүгүн Employee класстан мурас алышы (жана калган бөлүгүн биз кийинчерээк жаңы класстын өзүндө ишке ашырабыз) логикалуу болот:

<?php class Programmer extends Employee { } ?>

Ошол эле учурда, Pogrammer класстын iProgrammer интерфейсин ишке ашырышы керек экенин билебиз:

<?php class Programmer implements iProgrammer { } ?>

Келгиле, Employee класстан мурастоону жана iProgrammer интерфейсин ишке ашырууну айкалыштыралы:

<?php class Programmer extends Employee implements iProgrammer { } ?>

Натыйжада, биздин Pogrammer класстын Employee класстан __construct, getName жана getSalary методдорун мурас алышына алып келет, ал эми addLang жана getLangs методдорун биз ишке ашырышыбыз керек болот:

<?php class Programmer extends Employee implements iProgrammer { public function addLang($lang) { // ишке ашыруу } public function getLangs() { // ишке ашыруу } } ?>

iProgrammer интерфейсине, методдор класска өздөрүнүңкү же мурастык болгону маанилүү эмес - негизгиси, сүрөттөлгөн бардык методдор ишке ашырылган болушу керек.

Менин Employee класстын кодунун жана iProgrammer интерфейсинин кодунун көчүрмөсүн алыңыз. Менин Programmer класстын үлгүсүн көчүрбөңүз - менин кодго карабай, бул классты өз алдыңызча ишке ашырыңыз.

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