могу ли я выполнить эту работу без использования __конструктора

#php #oop #inheritance

Вопрос:

я работал над чем-то еще, немного похожим на эту проблему. то, что я пытаюсь сделать, — это создать класс с частными свойствами (или что-то еще, не знаю, как это назвать) и хранить в частном порядке в классе, а затем создать наследование, подобное этому:

(я хочу уточнить свое объяснение подробнее, но мой вокабуляр в программировании очень ограничен)

 lt;?php  class Fruit {  private $name;  private $color;  public function patients($name, $color) {  $this-gt;name = $name;  $this-gt;color = $color;  }    public function intro() {  echo "The fruit is {$this-gt;name} and the color is {$this-gt;color}.";  }  }    // Strawberry is inherited from Fruit  class Strawberry extends Fruit {  public function message() {  echo $this-gt;intro();  }    }    $strawberry = new Strawberry("Strawberry", "red");  $strawberry-gt;message();    ?gt;  

Ответ №1:

Да, ты можешь. Вы должны использовать методы, которые вы объявили, а не использовать конструктор ( new Strawberry("Strawberry", "red"); ), если вы его не настроили и не хотите его использовать):

 lt;?php class Fruit {  private $name;  private $color;  public function describe($name, $color) {  $this-gt;name = $name;  $this-gt;color = $color;  }   public function intro() {  echo "The fruit is {$this-gt;name} and the color is {$this-gt;color}.";  } }  // Strawberry is inherited from Fruit class Strawberry extends Fruit {  public function message() {  echo $this-gt;intro();  } }  

Переименовал свой метод patients() describe() , чтобы он был более подходящим. Удалил ваш метод assignPatient() , так как вы его не использовали, и он в основном делал то же самое, что describe() и делает. Теперь вы можете использовать

 $strawberry = new Strawberry(); $strawberry-gt;describe("Strawberry", "red"); $strawberry-gt;message();  

чтобы вывести «Плод-клубника, а цвет-красный»..

На самом деле вы могли бы также удалить свой message() метод и intro() вместо этого позвонить:

 $strawberry = new Strawberry(); $strawberry-gt;describe("Strawberry", "red"); $strawberry-gt;intro();  

Комментарии:

1. большое вам спасибо, я кое-чему у вас научился