PHP
protected property ve method
protected erişimle yalnızca sınıf ve alt sınıfların erişebildiğini öğrenirsin.
protected erişim düzeyi
PHP'de üç erişim düzeyi vardır: public, protected ve private. Bunlar, bir property veya metodun nereden erişilebileceğini belirler.
public her yerden erişilebilir. private yalnızca tanımlandığı sınıftan. protected ise tanımlandığı sınıftan VE o sınıfın alt sınıflarından (çocuklarından) erişilebilir.
Miras alacağınız property'leri protected yaparsanız, çocuk sınıflar $this->... ile onlara doğrudan erişip değiştirebilir. Bu, mirasla birlikte en sık kullanılan düzeydir.
protected ile miras örneği
Bir BankAccount sınıfı, $balance property'sini dışarıdan doğrudan değiştirilmekten korumak istesin. Eğer private yaparsan, çocuk sınıf SavingsAccount bu property'ye erişemez; faiz ekleyemez.
Bunun yerine protected yaparsan, SavingsAccount::applyInterest() metodu $this->balance += $amount yazabilir. Bu, dış dünyaya kapalı ama çocuklara açık bir erişim sağlar.
Bu denge, güvenli ve genişletilebilir sınıf hiyerarşileri kurmanın anahtarıdır.
Uygulama SavingsAccount, protected balance'ı kullansın
Bu derste BankAccount sınıfının $balance property'si protected olarak tanımlı. Sen, SavingsAccount sınıfını BankAccount'tan türet ve applyInterest(int $amount) metodu yaz. Bu metodun içinde $this->balance += $amount ile korumalı bakiyeye faiz ekle. 1000 başlangıç bakiyeli bir SavingsAccount örneği yapıp 50 faiz ekle, sonra getBalance() çıktısını yazdır.
Örnek çözümü göster
SavingsAccount extends BankAccount. applyInterest metodu $this->balance += $amount; yazıyor; protected olduğu için erişebilir.
Örnek çözüm:
<?php
// Banka hesabı sınıfı
class BankAccount {
protected int $balance;
public function __construct(int $balance) {
$this->balance = $balance;
}
public function getBalance(): int {
return $this->balance;
}
}
// Tasarruf hesabı sınıfı
class SavingsAccount extends BankAccount {
public function applyInterest(int $amount): void {
$this->balance += $amount;
}
}
$account = new SavingsAccount(1000);
$account->applyInterest(50);
echo $account->getBalance();
Kendini test et
-
protected bir property'ye nereden erişilir?
- Yalnızca tanımlandığı sınıf dışından
- Her yerden
- Tanımlandığı sınıftan ve alt sınıflardan
- Hiçbir yerden
Cevabı göster
Tanımlandığı sınıftan ve alt sınıflardan — Doğru; protected üyeye sınıf içinden ve alt sınıflardan erişilir.
-
protected bildirimini tamamla
____ int $balance;
public function __construct(int $balance) {
$this->balance = $balance;
}
Cevabı göster
protected int $balance;
public function __construct(int $balance) {
$this->balance = $balance;
}
-
Erişim düzeylerini eşleştir
- public
- Her yerden erişilebilir
- protected
- Sınıf ve alt sınıflardan
- private
- Yalnız sınıf içinden
Sıradaki ders: Miras zinciri