PHP5 ile birlikte sınıf soyutlama özelliği de eklenmiş oldu. Sınıflarda soyutlama ile ne denmek istediğini açıklayalım. Soyutlanmış sınıflar içerisinde yer alan soyut metotlar var ise, bu soyut sınıftan türeyen sınıflarda da aynı isimde metotlar mutlaka tanımlanmak zorundadır. Soyut sınıf oluşturmak için sınıfın başına ve soyut sınıftan türeyen sınıflarda bulunmasının zorunlu olmasını istediğimiz metotların başına da abstract
işleci eklenir.
Bazı soyut sınıflar sadece kendisinden türeyen sınıfların özetlerini tutabileceği gibi (hiçbir metot işlem yapmayabilir), bazende ortak olarak kullanılacak özellik ve metotlar da tanımlanabilir.
<?php abstract class soyut { #türeyen sınıfta zorunlu olması gereken metotlar abstract public function topla ($a, $b); abstract public function yaz(); #türeyen sınıflarda kullanılacak ortak metot public function ortak(){ echo 'Ortak metot kullanımı'; } } class somut extends soyut { public function topla ($c, $d){ return $c.'+'.$d.'='.($c + $d); } public function yaz(){ echo 'Soyut sınıfların kullanımı.'; } } $somut = new somut(); echo $somut->topla(10,20).'<br/>'; echo $somut->yaz().'<br/>'; echo $somut->ortak().'<br/>'; ?>
Yukarıdaki örnekte bir örnek verdim. Önce soyut
isimli abstract
önekli soyut
sınıfta iki adet abstract
önekli metot tanımladım. Bunun anlamı, eğer soyut
isimli sınıftan bir sınıf türetilecekse, türeyen sınıfta bir iki sınıf kullanılsın veya kullanılmasın mutlaka tanımlanmalıdır. Soyut sınıfımızda bir tane de ortak metot bulunuyor.
Şimdi, somut
isimli sınıfı soyut
isimli sınıftan türettik ve dikkat ederseniz zorunlu metotları tanımladım. Eğer somut
sınıfında yer alan yaz veya topla metodundan herhangi birini tanımlamamış olsaydık, Fatal Error ile karşılaşırdık 🙂 İşte, soyut sınıflar kendinden türeyecek olan sınıfların özetini barındıran ve OOP mimarisiyle birlikte gelen özel sınıf yapılarıdır.