⊗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 файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау