Уроки PHP – Абстрактные классы и ключевые слова

В предыдущем уроке мы рассмотрели конструкторы и деструкторы в 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
?>

 

 

Ключевое слово static

Следующая вещь, которая довольно часто встречается в 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 метод и унаследовать 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.

 

Recent Posts

History Hijacking: Почему Google наказывает за «сломанную» кнопку Назад и как защитить сайт с помощью CSP

Каждый владелец сайта и SEO-специалист ведет ежедневную упорную борьбу за удержание пользователя на страницах вебресурса.…

9 часов ago

Интернет-магазин без лишнего функционала: как не переплатить за разработку на старте

Многие предприниматели сталкиваются с одной и той же проблемой. После утверждения бюджета разработка затягивается, появляются…

1 день ago

Как выбрать детские бутсы для футбольной секции и не ошибиться с типом подошвы

Футбольная секция быстро показывает, насколько обувь подходит ребенку. Если пара скользит, давит или плохо цепляется…

2 дня ago

Флагманский смартфон: почему стоит купить Samsung Galaxy S26 Ultra

Компания Samsung — один из лидеров на рынке электроники. Ее смартфоны выделяются надежностью, качественными дисплеями,…

2 дня ago

Глагол dar в испанском языке: значение, спряжение и особенности использования

Испанский язык привлекает миллионы людей своей мелодичностью, эмоциональностью и относительной простотой изучения. Одним из важнейших…

1 неделя ago

Идеальное рабочее место: собираем надежный сетап для стабильной работы и гейминга

Рабочее пространство давно перестало быть просто столом с ноутбуком. Сегодня это полноценная экосистема, где каждая…

1 неделя ago