⊗ppOpFnCl 63 of 107 menu

Abstrakt siniflar PHP-də OOP-də

Tutaq ki, sizin User sinfiniz var, və ondan Employee ve Student sinifleri miras alır.

Eyni zamanda güman edilir ki, siz Employee ve Student siniflerinin obyektlerini yaradacaqsınız, amma User sinfinin obyektlerini yaratmayacaqsınız, çünki bu sinif yalnız öz varislərinin ümumi xüsusiyyət ve metodlarını qruplaşdırmaq üçün istifadə olunur.

Bu halda User sinfinin obyektlerini yaratmağı məcburi qadağan edə bilərsiniz, beləliklə siz və ya başqa proqramçı hardasa onları təsadüfən yaratmaz.

Bunun üçün sözdə abstrakt siniflər mövcuddur. Abstrakt siniflər onlardan miras almaq üçün nəzərdə tutulmuş siniflərdir. Eyni zamanda belə siniflərin obyektlerini yaratmaq olmaz.

Sinifi abstrakt elan etmək üçün onun elanı zamanı abstract açar sözünü yazmaq lazımdır:

<?php abstract class User { } ?>

Beləliklə, gəlin User abstrakt sinfinin realizasiyasını yazaq. Tutaq ki, onun name private xüsusiyyəti, eləcə də onun üçün getter və setter-lar olacaq:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } } ?>

User sinfinin obyektini yaratmaq cəhdi xəta yaradacaq:

<?php $user = new User; // xəta verəcək ?>

Amma bizim sinfimizdən miras almaq mümkün olacaq. Gəlin User abstrakt sinfindən miras alan Employee sinfini yaradaq:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } } ?>

Gəlin Employee sinfinin obyektini yaradaq - hər şey işləyəcək:

<?php $employee = new Employee; $employee->setName('john'); // valideyn metodu, yəni User sinfinin metodu $employee->setSalary(1000); // öz metodu, yəni Employee sinfinin metodu echo $employee->getName(); // 'john' çıxardacaq echo $employee->getSalary(); // 1000 çıxardacaq ?>

Figure abstrakt sinfini yaradın, hansı ki, həndəsi fiquru təmsil edir. Qoy ondan çevrə, düzbucaqlı və kvadrat üçün siniflər miras alsın.

azbydeenesfrkakkptruuz