Sobes.tech
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. abstract anahtar 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.