Junior
Mürəkkəb sinifin mahiyyəti nədir?
sobes.tech Süni İntellekt
AI-dan cavab
Abstrakt sinif digər siniflər üçün şablon kimi xidmət etmək məqsədilə yaradılır. Birbaşa yaradıla bilməz, lakin abstrakt metodlar (bədən olmadan) və həmçinin konkret metodlar və xüsusiyyətlər içərə bilər.
Əsas məqamlar:
- Nümunə yarada bilməzsiniz:
new AbstraktSinif()səhv verəcək. - İrsi: Yalnız irsi mümkündür (
extends). - Abstrakt metodlar: interfeys müəyyən edir və alt siniflər tərəfindən həyata keçirilməlidir.
abstractaçar sözü ilə qeyd olunur və bədənə malik deyil. - Konkret metodlar və xüsusiyyətlər: birbaşa müəyyən edilə və istifadə oluna bilər, həmçinin alt siniflərdə yenidən təyin oluna bilər.
- Qismən həyata keçirmə: ümumi struktur və bəzi əsas funksionallıq təmin edir, həyata keçirmə detalları alt siniflərin ixtiyarındadır.
Misal:
<?php
abstract class Forma {
protected $rəng;
public function __construct($rəng) {
$this->rəng = $rəng;
}
abstract public function sahəniHesabla(); // Abstrakt metod
public function rəngiAl() {
return $this->rəng;
}
}
class Dairə extends Forma {
private $radius;
public function __construct($rəng, $radius) {
parent::__construct($rəng);
$this->radius = $radius;
}
public function sahəniHesabla() {
return pi() * $this->radius * $this->radius;
}
}
class Kvadrat extends Forma {
private $tərəf;
public function __construct($rəng, $tərəf) {
parent::__construct($rəng);
$this->tərəf = $tərəf;
}
public function sahəniHesabla() {
return $this->tərəf * $this->tərəf;
}
}
// İstifadə nümunəsi
$dairə = new Dairə("Qırmızı", 5);
echo "Dairənin sahəsi: " . $dairə->sahəniHesabla() . ", Rəng: " . $dairə->rəngiAl() . "\n";
$kvadrat = new Kvadrat("Mavi", 4);
echo "Kvadratın sahəsi: " . $kvadrat->sahəniHesabla() . ", Rəng: " . $kvadrat->rəngiAl() . "\n";
// Növbəti kod səhv verəcək: Fatal error: Abstract class instansiyası yaradıla bilməz
// $abstraktForma = new Forma("Naməlum");
Cədvəl müqayisəsi interfeyslər və adi siniflərlə:
| Xüsusiyyət | Abstrakt sinif | İnterfeys | Adi sinif |
|---|---|---|---|
| Nümunə yarada bilməz | Yox | Yox | Bəli |
| İrsi | Bəli (extends) + İcrası (implements) |
Yalnız İcrası (implements) |
Bəli (extends) |
| Metodlar | Konkret və abstraktlar | Yalnız abstraktlar (bədən olmadan) | Yalnız konkretlər |
| Xüsusiyyətlər | Bəli | Yox | Bəli |
| Çoxlu irsi | Yox | Bəli | Yox |
| Təyinat | Qismən həyata keçirmə, ümumi struktur | Müqavilənin müəyyənləşdirilməsi (davranış) | Tam həyata keçirmə, konkret obyekt |
İstifadə olunur, ümumi loqika və xüsusiyyətlər olan zaman, lakin onların konkret davranışı (bəzi metodların həyata keçirilməsi) fərqli olur. Kodun çox dəfə istifadəsini və siniflərin strukturunda vahidliyi təmin edir.