Я изучаю oop и практикую концепции с PHP. Я пытаюсь создать класс Human
и класс Dog
. Класс Human
будет иметь два свойства: $name:string
и $age:int
. Класс Human
объявляется первым, имея метод speak()
. Моя проблема в том, что когда Dog
расширяется от Humans
, я хочу, чтобы в нем было все, начиная с Human
, за исключением метода speak()
, где он будет заменен уникальным методом bark()
. Из того, что я искал, решение было бы установить speak()
в private
, тогда Dog
не унаследует его. Однако при назначении Human
на $person
, speak()
также недоступен, так как он является закрытым. Для меня это просто практика, чтобы понять oop. Что я должен делать с точки зрения лучших практик, если это было настоящее программное обеспечение? Опять же, я новичок в oop. Спасибо!
Вот мой код:
<?php
class Human {
public $name;
public $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function speak() {
}
}
class Dog extends Human {
public function bark() {
}
}
$people = array();
$dogs = array();
array_push($dogs, new Dog("Rocky", 4));
array_push($people, new Human("Carlos", 21));
$people[0]->speak();
$dogs[0]->bark();
?>