пара вопросов об OO и классах PHP

Я изучаю OO и классы, у меня есть пара вопросов об OO и классах PHP

  1. Насколько я понимаю, класс, который расширяет другой класс, просто означает, что класс, который расширяет другой класс, имеет доступ к переменным / свойствам и функциям / методам класса, из которого он распространяется. Это верно?

  2. Я знаю, что статический метод или свойство в основном такие же, как и процедурная функция или переменная вне класса, и могут использоваться практически везде. Это верно?

  3. Публичный означает, что любой класс может получить к нему доступ, а Private означает, что доступ и использование только класса, который является инкапсулированным или класса, который распространяется от владельца доступа. Это верно?

Solutions Collecting From Web of "пара вопросов об OO и классах PHP"

1) Да, это правильно. Детский класс наследует любые protected или public свойства и методы своего родителя. Все объявленные private не могут быть использованы.

2) Это верно. До тех пор, пока класс загружается (это хорошо подходит вашему автозагрузочному вопросу ранее), вы можете получить доступ к статическим методам с помощью оператора разрешения области (: :), например: ClassName::methodName();

3) У вас есть смысл public правильного, но, как я упоминал ранее, private методы могут использоваться только классом, в котором они объявлены.

 class parentClass { private $x; public $y; } class childClass extends parentClass { public function __construct() { echo $this->x; } } $z = new childClass(); 

Вышеприведенный код приведет к возникновению ошибки NOTICE , так как $ x недоступен для childClass.

Примечание. Неопределенное свойство: childClass :: $ x

Если вместо $ x было объявлено protected , тогда у childClass будет доступ. Изменить: свойство, объявленное как protected , доступно классу, объявляющему его, и любым дочерним классам, которые его расширяют, но не к «внешнему миру» в противном случае. Это хорошее промежуточное звено между public и private .

Для 1. Как я понимаю, класс, который расширяет другой класс, просто означает, что класс, который расширяет другой класс, имеет доступ к переменным / свойствам и функциям / методам класса, из которого он распространяется. Это верно?

ANS: Это правильно, но это еще не все. Расширяющийся класс также может настраивать расширенный класс, переопределяя метод расширенного класса. Кроме того, он также может расширить функциональность суперкласса, добавив новые поля и методы.

Для 2. Я знаю, что статический метод или свойство в основном такие же, как и процедурная функция или переменная вне класса, и могут использоваться практически везде. Это верно?

ANS: Да, это правильно, и, как сказал zombat, пока класс является открытым и загруженным, а свойство и метод являются общедоступными. Другими словами, вы используете класс как пространство имен этих элементов.

Для 3. Общественных означает, что любой класс может получить к нему доступ, а Частный означает, что доступ и использование только класса, который является инкапсулированным или класса, который распространяется от владельца доступа. Это верно?

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

Просто добавьте комментарий в Замбат.

Существует очень мало необходимости объявлять что-либо частным, поскольку вместо этого используется общее правило.