CodeBlanks Logo Icon CodeBlanks

protected property ve method

PHP kursu · Orta seviye · Ders 16/115

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

  1. 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.

  2. 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;
        }
  3. 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

Orta seviye bölümündeki tüm dersler