В предыдущем уроке мы рассмотрели конструкторы и деструкторы в PHP. Следующим пунктом идет рассмотрение абстрактных классов и ключевых слов static
и final
.
В чем разница между обычными классами и абстрактными? Разница между «обычным» и абстрактным классом заключается в том, что абстрактный класс может быть унаследован, но нельзя создать его экземпляр (не может быть инстанцирован). Он также может содержать абстрактные методы. Это методы без какого-либо реального кода в них. В таких классах вы используете только ключевое слово abstract
, название метода и параметры.
Этой особенностью абстрактный класс сильно похож на интерфейс класса. Практическая польза от использования абстрактного класса заключается в том, что вы можете создать что-то вроде «шаблона». Затем другие классы могут использовать этот «шаблон» или наследовать его. Это обяжет классы реализовывать абстрактные методы, которые вы объявили внутри абстрактного класса.
Необходимо запомнить две важные вещи, связанные с методами, объявленными внутри абстрактного класса. Во-первых, когда класс наследуется от абстрактного класса, он должен реализовать все его абстрактные методы. Во-вторых, абстрактные методы могут использоваться только в абстрактных классах.
<?php abstract class Sobaka { abstract public function golos(); } class Buldog extends Sobaka { public function golos() { echo "Gav"; } } $reks = new Buldog(); $reks->golos(); // Gav ?>
Следующая вещь, которая довольно часто встречается в PHP-классах, это два ключевых слова static
и final
. Первое ключевое слово (static
) определяет свойства и методы класса, к которым можно получить доступ, не создавая новый объект или экземпляр этого класса. Как получить доступ к любому статическому свойству или методу? Вы должны использовать оператор ::
(двойное двоеточие). Это то, что называется оператором разрешения области видимости. Вы вставляете его между именем класса и именем свойства или метода.
<?php class Sobaka { static $vozrast = 7; static function golos() { echo "Gav"; } } // получаем доступ к статическому свойству $vozrast echo Sobaka::$vozrast; // 7 // получаем доступ к статическому методу golos() Sobaka::golos(); // Gav ?>
Если вам нужно получить доступ к статическому свойству из статического метода, вам нужно использовать другое ключевое слово self
.
<?php class Chelovek { static $vozrast = 35; static function vozrastCheloveka() { // получаем доступ к статическому свойству $vozrast echo self::$vozrast; } } // получаем доступ к статическому методу vozrastCheloveka() Chelovek::vozrastCheloveka(); // 35 ?>
Второе ключевое слово – final
. Это ключевое слово определяет методы, которые нельзя переопределить в дочерних классах. Вы также можете использовать это ключевое слово при объявлении новых классов. Классы, которые вы объявили с помощью ключевого слова final
, не могут быть унаследованы. Давайте рассмотрим простой пример того, как изменить final
метод и унаследовать final
класс.
<?php class Chelovek { final function identifikaciya() { echo "Human"; } } // создадим дочерний класс с названием Man и попробуйте переопределить метод identifikaciya() class Man extends Chelovek { function identifikaciya() { echo "Man"; // Fatal error: Cannot override final method Chelovek::identifikaciya() } } // создадим новый final класс Chelovek final class Chelovek {} // попробуем унаследовать класс от final класса Chelovek class Man extends Chelovek {} // Fatal error: Class Man may not inherit from final class (Chelovek) ?>
На сегодня все! В последующих статьях мы будем рассматривать более углубленные вещи языка программирования PHP.
Выбор мастера для ремонта и перетяжки мебели — задача, которая требует вдумчивого подхода. Ведь от…
Выбор идеального хостинга под свой сайт может быть довольно запутанным делом, особенно когда существует так…
Чтобы избегать ошибок, нужно набираться опыта; чтобы набираться опыта, надо делать ошибки Лоуренс Питер
Краткое определение Черного SEO Черное СЕО (или Черная оптимизация) — это любая практика, целью которой…
Получение водительских прав категории C открывает двери к профессиональной деятельности, связанной с управлением грузовыми автомобилями.…