Junior
Soyut sınıfın özü nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir soyut sınıfın amacı, diğer sınıflar için şablon görevi görmektir. Doğrudan oluşturulamaz, ancak soyut metodlar (gövdesiz) içerebilir ve bu metodların alt sınıflar tarafından uygulanması gerekir, ayrıca somut metodlar ve özellikler de içerebilir.
Ana noktalar:
- Örnek oluşturulamaz:
new SoyutSınıf()hataya neden olur. - Kalıtım: Sadece bir soyut sınıftan kalıtım alınabilir (
extends). - Soyut metodlar: Alt sınıfların uygulaması gereken arayüzü tanımlar.
abstractanahtar kelimesiyle işaretlenir ve gövdesi yoktur. - Somut metodlar ve özellikler: Doğrudan tanımlanabilir ve kullanılabilir, ayrıca alt sınıflarda üzerine yazılabilir.
- Kısmi uygulama: Genel bir yapı ve temel işlevsellik sağlar, uygulama detayları alt sınıflara bırakılır.
Örnek:
<?php
abstract class Şekil {
protected $renk;
public function __construct($renk) {
$this->renk = $renk;
}
abstract public function alanHesapla(); // Soyut metod
public function renkAl() {
return $this->renk;
}
}
class Daire extends Şekil {
private $yaricap;
public function __construct($renk, $yaricap) {
parent::__construct($renk);
$this->yaricap = $yaricap;
}
public function alanHesapla() {
return pi() * $this->yaricap * $this->yaricap;
}
}
class Kare extends Şekil {
private $kenar;
public function __construct($renk, $kenar) {
parent::__construct($renk);
$this->kenar = $kenar;
}
public function alanHesapla() {
return $this->kenar * $this->kenar;
}
}
// Kullanım örneği
$daire = new Daire("Kırmızı", 5);
echo "Dairenin alanı: " . $daire->alanHesapla() . ", Renk: " . $daire->renkAl() . "\n";
$kare = new Kare("Mavi", 4);
echo "Kare alanı: " . $kare->alanHesapla() . ", Renk: " . $kare->renkAl() . "\n";
// Aşağıdaki kod hata verecektir: Soyut sınıf örneği oluşturulamaz
// $soyutŞekil = new Şekil("Bilinmeyen");
Sınıflar ve arayüzler arasındaki karşılaştırma tablosu:
| Özellik | Soyut Sınıf | Arayüz | Normal Sınıf |
|---|---|---|---|
| Örnek oluşturma | Hayır | Hayır | Evet |
| Kalıtım | Evet (extends) + Uygulama (implements) |
Sadece Uygulama (implements) |
Evet (extends) |
| Metodlar | Somut ve soyut metodlar | Sadece soyut (gövdesiz) | Sadece somut |
| Özellikler | Evet | Hayır | Evet |
| Çoklu kalıtım | Hayır | Evet | Hayır |
| Kullanım amacı | Kısmi uygulama, genel yapı | Sözleşme tanımlama (davranış) | Tam uygulama, somut nesne |
Bir grup ilişkili sınıfın ortak özellikleri ve mantığı olması gerektiğinde, ancak belirli davranışların (bazı metodların uygulaması) farklı olduğu durumlarda kullanılır. Kodun tekrar kullanılmasını ve sınıf yapısında tutarlılığı sağlar.