PHP'de OOP'de Ebeveyn Yöntemlerini Geçersiz Kılma

Bir alt sınıf, aynı isimde bir yöntem oluşturarak ebeveyn yöntemini geçersiz kılabilir. Bir örnek üzerinden inceleyelim. Aşağıdaki ebeveyn sınıfımız olduğunu varsayalım:

php<?php
  class User {
    private $name;
    
    public function setName($name) {
      $this->name = $name;
    }
    public function getName() {
      return $this->name;
    }
  }
?>

Şimdi alt sınıfta aynı isimde bir yöntem oluşturalım:

php<?php
  class Student extends User {
    public function setName($name) {
      
    }
  }
?>

Genellikle, ebeveyn yöntemlerini geçersiz kılmak, bu yöntemin davranışını değiştirmek veya tamamlamak için gereklidir. Bizim durumumuzda, isim uzunluğu için bir kontrol ekleyelim:

php<?php
  class Student extends User {
    public function setName($name) {
      if (strlen($name) > 0) {
        $this->name = $name;
      } else {
        echo 'student name error';
      }
    }
  }
?>

Şimdi, gerçekten de geçersiz kılınan yöntemin çağrıldığından emin olalım. Öncelikle alt sınıfın bir nesnesini oluşturalım:

php<?php
  $student = new Student;
?>

Şimdi yöntemimizi, ona geçerli bir değer ileterek çağıralım:

php<?php
  $student->setName('john');
?>

Şimdi ise yöntemi, geçersiz bir değer ileterek çağıralım. Sonuç olarak, oluşturulan istisnayı göreceğiz:

php<?php
  $student->setName(''); // hata
?>
Задание 1

User sınıfında yaş için getter ve setter yapın.

Задание 2

Employee sınıfında yaş setter'ını geçersiz kılın ve içinde yaşın 18 ile 65 yaş arasında olduğunu kontrol edin.