⊗ppOpIhPPP 33 of 107 menu

OOP-ում PHP-ում ժառանգման ընթացքում մասնավոր հատկությունների խնդիրը

Փաստը, որ մասնավոր հատկությունները չեն ժառանգվում, կարող է հանգեցնել անսպասելի խնդրի: Եկեք նայենք օրինակով: Ենթադրենք, մենք ունենք հետևյալ ծնող դասը մասնավոր հատկությամբ.

<?php class User { private $age; public function setAge($age) { $this->age = $age; } public function getAge() { return $this->age; } } ?>

Ենթադրենք, որ սերած դասում մենք որոշել ենք ստեղծել մեթոդ, որը կավելացնի տարիքը մեկով: Սակայն, ծնողի մասնավոր հատկությունը փոխելու փորձը կհանգեցնի սխալի.

<?php class Student extends User { public function incAge() { $this->age++; // սխալ } } ?>

Սխալը կվերանա, եթե սերած դասում հայտարարվի մասնավոր հատկություն $age.

<?php class Student extends User { private $age; public function incAge() { $this->age++; } } ?>

Ահա թե որտեղ է մեզ սպասում թակարդը! Իրականում մենք ստեղծել ենք երկու մասնավոր հատկություն. մեկը ծնողում և մեկը սերածում: Եվ դրանք աշխատում են ամբողջովին անկախ: Սա նշանակում է, որ ծնողի մեթոդները կփոխեն իրենց հատկությունը, իսկ սերածի մեթոդները՝ իրենցը:

Այս խնդիրն իրականում լուծում ունի: Պարզապես անհրաժեշտ է կառավարել ծնողի մասնավոր հատկությունները այդ ծնողի մեթոդների միջոցով: Եկեք վերագրենք մեր կոդը համապատասխանաբար.

<?php class Student extends User { public function incAge() { $age = $this->getAge(); $age++; $this->setAge($age); } } ?>

Կարելի է պարզեցնել.

<?php class Student extends User { public function incAge() { $this->setAge($this->getAge() + 1); } } ?>

Հետևյալ կոդում սերած դասում վերասահմանվում է ծնողի մեթոդը: Ուղղեք այս կոդի խնդիրները.

<?php class User { private $name; public function setName($name) { $this->name = $name; } public function getName() { return $this->name; } } class Employee extends User { public function setName($name) { if (strlen($name) > 0) { $this->name = $name; // սխալ } } } ?>
Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել