protected erişim belirleyicisi ( özel)
Daha önce sınıflarda erişim belirleyicileri yazımda 3 adet erişim belirleyicisi olduğundan bahsetmiştik. public ve private konularını anlatmıştık, bu yazımda ise sonuncusu olan protected erişim belirleyicisini anlatacağım.
protected erişim belirleyicisi kullanılan metod yada özellik
- sınıf içinden erişilebilir,
- sınıf dışından erişilemez,
- ve türetilen sınıflardan erişilebilir.
olmaktadır.
Yani protected aslında private ile public arasında bir yerde duruyor. Dışarıya kapalı ama aileye açık diyebiliriz. Buradaki aile dediğimiz de extends ile türetilen yani miras alan sınıflar oluyor.
yine protected özellikteki metod yada özelliğe sınıf dışından erişebilmek için aynı sınıf içindeki başka bir public metod kullanılmalıdır.
class Kase{ // Kaşe sınıfı
protected $isim = "Mustafa YILMAZ"; // Kase sınıfına ait $isim özelliği ( protected görünürlüğüne sahip)
public function yaz(){
echo $this->isim ."<br>";
}
public function set( $param ){
$this->isim = $param;
}
}
$ornek = new Kase();
// $ornek->isim ="Büşra Büş"; // bu satır hata verir.
$ornek->set("Büşra Büş"); // public olan set() metodu ile değeri değiştiriyoruz.
$ornek->yaz();
kodların açıklamasını yapacak olursak,
$isim özelliği protected olduğu için sınıf dışından $ornek->isim diyerek değiştirmeye çalıştığımızda php hata verir. Bu yüzden değeri değiştirmek için public olan set() metodunu, ekrana yazmak için de yine public olan yaz() metodunu kullandık.
Buraya kadar private ile aynı gibi görünüyor değil mi? Asıl fark türetilen sınıfta ortaya çıkıyor. Şimdi Kase sınıfından yeni bir sınıf türetelim.
class Imza extends Kase{
public function imzala(){
echo "imza sahibi :: ". $this->isim ."<br>"; // protected olduğu için erişebiliyoruz
}
}
$ornek2 = new Imza();
$ornek2->imzala(); // imza sahibi :: Mustafa YILMAZ
Imza sınıfı Kase sınıfından türetildiği için içerisinde $this->isim diyerek protected olan özelliğe rahatlıkla erişebildik. Eğer $isim özelliği private olsaydı bu kod hata verecekti.
Peki ne zaman protected kullanmalıyız? Bir özelliğin dışarıdan değiştirilmesini istemiyorsanız ama ileride bu sınıftan türeteceğiniz sınıfların o özelliği kullanmasını istiyorsanız protected tam size göre.
Henüz Yorum Yapılmamış. İlk Yorumu Siz Yapın!