Внутри PHP руководство пример http://php.net/manual/en/language.oop5.visibility.php#example-242 он говоритPHP OOP переобъявить частный метод/функцию в дочернем классе
Мы можем переобъявить общественности и защищенный метод, но не частный
, что они означают мои что я, возможно, не получаю, как правильно использовать наследование, но скажем, что у нас есть этот код.
class MyClass1 {
public $public = 'Public 1';
protected $protected = 'Protected 1';
private $private = 'Private 1';
function printHello1() {
echo $this->public . " MyClass1 ". PHP_EOL;
echo $this->protected . " MyClass1 " . PHP_EOL;
echo $this->private . " MyClass1 " . PHP_EOL;
}
}
class MyClass2 extends MyClass1 {
public $public = 'Public 2';
protected $protected = 'Protected 2';
private $private = 'Private 2';
function printHello2() {
echo $this->public . " MyClass2 ". PHP_EOL;
echo $this->protected . " MyClass2 " . PHP_EOL;
echo $this->private . " MyClass2 " . PHP_EOL;
}
}
$obj2 = new MyClass2();
$obj2->printHello1();
$obj2->printHello2();
вернется
Public 2 MyClass1
Protected 2 MyClass1
Private 1 MyClass1
Public 2 MyClass2
Protected 2 MyClass2
Private 2 MyClass2
Похоже, я могу создать еще одну переменную $private
в MyClass2
без каких-либо проблем, так почему они говорят, что его мы не можем?
да это не меняет $private
переменных в MyClass1
, когда я использую функцию printHello1()
в родительском классе, однако, когда я запускаю printHello2()
в дочернем классе MyClass2
это показывает новое значение для $private
переменных.
Теперь вопрос у меня есть это плохая практика:
- Перезапись/переобъявить функция частной собственности в дочернем классе?
- Создайте вторую функцию
printHello2()
в дочернем классе, если она уже есть в родительском классе, это делает код бит спагетным, не так ли? - Точная точная логика применяется к частным методам правильно?