⊗ppOpFnCl 63 of 107 menu

PHP'de OOP'de Soyut Sınıflar

Diyelim ki bir User sınıfınız var ve ondan Employee ve Student sınıfları kalıtım alıyor.

Bu durumda, Employee ve Student sınıflarının nesnelerini oluşturacağınız öngörülüyor, ancak User sınıfının nesnelerini oluşturmayacaksınız, çünkü bu sınıf sadece kendi mirasçılarının genel özelliklerini ve yöntemlerini gruplamak için kullanılıyor.

Bu durumda, User sınıfının nesnelerini oluşturmayı zorunlu olarak yasaklayabilirsiniz, böylece siz veya başka bir programcı bir yerde yanlışlıkla oluşturmaz.

Bunun için sözde soyut sınıflar vardır. Soyut sınıflar, onlardan kalıtım almak için tasarlanmış sınıflardır. Aynı zamanda bu tür sınıfların nesneleri oluşturulamaz.

Bir sınıfı soyut olarak bildirmek için, bildiriminde abstract anahtar kelimesini yazmanız gerekir:

<?php abstract class User { } ?>

Öyleyse, User soyut sınıfının gerçekleştirimini yazalım. Onun özel bir name özelliği ve ayrıca bunun için getter'lar ve setter'lar olsun:

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

User sınıfının bir nesnesini oluşturma girişimi bir hataya neden olacaktır:

<?php $user = new User; // hata verecek ?>

Ancak sınıfımızdan kalıtım almak mümkün olacaktır. Soyut User sınıfımızdan kalıtım alacak bir Employee sınıfı yapalım:

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

Employee sınıfının bir nesnesini oluşturalım - her şey çalışacaktır:

<?php $employee = new Employee; $employee->setName('john'); // üst sınıfın yöntemi, yani User sınıfı $employee->setSalary(1000); // kendi yöntemi, yani Employee sınıfı echo $employee->getName(); // 'john' yazacak echo $employee->getSalary(); // 1000 yazacak ?>

Geometrik bir şekli temsil eden soyut bir Figure sınıfı yapın. Ondan daire, dikdörtgen ve kare için sınıflar kalıtım alsın.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet