MyTetra Share
Делитесь знаниями!
PHP5: public, protected, private, final в PHP
Время создания: 04.04.2013 19:27
Текстовые метки: php, наследование, класс, class, final, public, private, protected
Раздел: Компьютер - Программирование - Язык PHP
Запись: xintrea/mytetra_syncro/master/base/13650892517w2h5ctf7m/text.html на raw.github.com

Видимость свойств и методов может быть определена ключевыми словами: public, protected, private.


  • Модификатор public позволяет обращаться к свойствам и методам отовсюду.
  • Модификатор protected позволяет обращаться к свойствам и методам только текущего класса и класса, который наследует свойства и методы текущего класса. Другими словами, методы и свойства класса, объявленные через protected будут переданы в классы-наследники.
  • Модификатор private позволяет обращаться к свойствам и методам только внутри текущего класса. То есть, помеченный модификатором private элемент объекта может быть использован только в самом объекте и нигде больше.


Это самые главные положения, которые должен знать об области видимости программист на ООП языке. Этими модификаторами управляется сам костяк большого приложения. Общая рекомендация такая - использовать как можно жесткие ограничивающие модификаторы, и переходить на более мягкие только в случае необходимости.


Так же в PHP5 присутсвует ключевое слово final. Оно запрещает перегружать данный метод в классах-наследниках.


Пример:


class Member {

public $username = "";

private $loggedIn = false;

public final function login() {

$this->loggedIn = true;

}

public function logout() {

$this->loggedIn = false;

}

public function isLoggedIn() {

return $this->loggedIn;

}

}


Если кто-то попытается наследовать класс и перегрузить данный метод:


class NaughtyMember extends Member {

public function login() {

$this->loggedIn = true;

// сделать что-то плохое

}

}



… PHP выведет сообщение об ошибке:


Fatal error: Cannot override final method Member::login()



Вы можете также запретить наследование от всего класса с помощью ключевого слова final:


final class Member {

// от этого класса нельзя вообще наследовать

}


Любая попытка создать дочерний класс данного класса, не увенчается успехом:


Fatal error: Class NaughtyMember may not inherit from final class (Member)


Поддержка этих ключевых слов появилась именно в PHP5, в PHP версии 4 возможности помечать методы и классы как неизменяемые не было.




Знаете ли вы, что:

Качественное изготовление и продвижение Интернет-сайта под ключ можно заказать на сайте apsite.in.ua. Компания специализируется на креативном подходе, что обеспечивает уникальность и узнаваемость сайта.



Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования