⊗ppOpFnMt 64 of 107 menu

PHP da OOP da Abstrakt Metodlar

Abstrakt klasslar shuningdek, abstrakt metodlarni o'z ichiga olishi mumkin. Bunday metodlar amalga oshirilishi shart emas, balki voris klasslarda bunday metodlar bo'lishi kerakligini ko'rsatish uchun ishlatiladi. Aslida bunday metodlarni amalga oshirish voris klasslarning vazifasidir.

Metodni abstrakt deb e'lon qilish uchun, uni e'lon qilishda abstract kalit so'zini yozish kerak.

Keling, amalda sinab ko'raylik. Faraz qilaylik, User klassining barcha vorislari increaseRevenue metodiga ega bo'lishi kerak.

Ushbu metod foydalanuvchi joriy daromadini olishi va uni parametr sifatida uzatilgan ma'lum bir qiymatga oshirishi kerak.

User klassi o'zi qanday daromad olishini bilmaydi - axir ishchining maoshi, talbaning esa stipendiyasi bor. Shuning uchun har bir voris ushbu metodni o'ziga xos tarzda amalga oshiradi.

Bu erda muhim jihat shundaki, User klassining abstrakt metodi dasturchini ushbu metodni voris klasslarda amalga oshirishga majburlaydi, aks holda PHP xatolik ko'rsatadi. Shu tarzda siz yoki sizning kodingiz bilan ishlaydigan boshqa dasturchi, voris klassda kerakli metodni amalga oshirishni hech qachon unutmaydi.

Shunday qilib, keling amalda sinab ko'raylik. User klasiga increaseRevenue abstrakt metodini qo'shamiz:

<?php abstract class User { private $name; public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } // Tanaisiz abstrakt metod: abstract public function increaseRevenue($value); } ?>

Employee klassimiz hozircha o'zgarishsiz qolsin. Bunday holda, Employee klassi ob'ektini yaratmasdan, shunchaki klasslarimiz aniqlangan kodni ishga tushirsangiz ham, PHP xatolik ko'rsatadi.

Keling endi Employee klasida increaseRevenue metodini amalga oshirishni yozamiz:

<?php class Employee extends User { private $salary; public function getSalary() { return $this->salary; } public function setSalary($salary) { $this->salary = $salary; } // Metodni amalga oshirishni yozamiz: public function increaseRevenue($value) { $this->salary = $this->salary + $value; } } ?>

Keling, klassimiz ishlashini tekshiramiz:

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

increaseRevenue metodini Student klasida ham amalga oshiramiz. Faqat endi bizning metodimiz stipendiyani oshiradi:

<?php class Student extends User { private $scholarship; // stipendiya public function getScholarship() { return $this->scholarship; } public function setScholarship($scholarship) { $this->scholarship = $scholarship; } // Metod stipendiyani oshiradi: public function increaseRevenue($value) { $this->scholarship = $this->scholarship + $value; } } ?>

User klassingizga xuddi shunday increaseRevenue abstrakt metodini qo'shing. Ushbu metodni amalga oshirishni Employee va Student klasslarida yozing.

Figure klasida figura yuzasi va perimetrini olish uchun abstrakt metodlar yarating.

Oʻzbek
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекTiếng Việt
Biz sayt ishlashi, tahlil qilish va shaxsiylashtirish uchun cookie-fayllardan foydalanamiz. Ma'lumotlarni qayta ishlash Maxfiylik siyosatiga muvofiq amalga oshiriladi.
hammasini qabul qilish sozlash rad etish