Уроки 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 $vik = 7;
 static function golos() {
  echo "Gav";
 }
}
// отримуємо доступ до статичної властивості $vik
echo Sobaka::$vik; // 7
// отримуємо доступ до статичного методу golos()
Sobaka::golos(); // Gav
?>

 

 

Якщо вам потрібно отримати доступ до статичної властивості зі статичного методу, вам потрібно використовувати інше ключове слово self.

<?php
class Lyudina {
static $vik = 35;
static function vikLyudinu() {
 // отримуємо доступ до статичної властивості $vik
 echo self::$vik;
}
}
// отримуємо доступ до статичного методу vikLyudinu()
Lyudina::vikLyudinu(); // 35
?>

 

 

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

Друге ключове слово – final. Це ключове слово визначає методи, які не можна перевизначити в дочірніх класах. Ви також можете використовувати це ключове слово при оголошенні нових класів. Класи, які ви оголосили за допомогою ключового слова final, не можуть бути успадковані. Давайте розглянемо простий приклад того, як змінити final метод і успадкувати final клас.

<?php
class Lyudina {
 final function identifikaciya() {
  echo "Human";
 }
}
// створимо дочірній клас з назвою Man і спробуйте перевизначити метод identifikaciya()
class Man extends Lyudina {
 function identifikaciya() {
  echo "Man"; // Fatal error: Cannot override final method Lyudina::identifikaciya()
 }
}
// створимо новий final клас Lyudina
final class Lyudina {}
// спробуємо успадкувати клас від final класу Lyudina
class Man extends Lyudina {} // Fatal error: Class Man may not inherit from final class (Lyudina)
?>

 

 

На сьогодні все! У наступних статтях ми будемо розглядати більш поглиблені речі мови програмування PHP.

 

Recent Posts

Чому обрати освіту за кордоном: переваги для майбутнього вашої дитини

Навчання за кордоном вже давно асоціюється з якісною освітою, новими можливостями та безліччю перспектив. Але…

1 день ago

Як вибрати майстра для перетяжки меблів?

Вибір майстра для ремонту та перетяжки меблів – завдання, яке потребує вдумливого підходу. Адже від…

2 дні ago

Що краще вибрати для хостингу: сервер VPS Windows чи VPS Linux?

Вибір ідеального хостингу під свій сайт може бути досить заплутаною справою, особливо коли існує багато…

1 тиждень ago

Лоуренс Пітер

Щоб уникати помилок, потрібно набиратися досвіду; щоб набиратися досвіду, потрібно робити помилки Лоуренс Пітер  

2 тижні ago

Що таке Чорне СЕО (Black Hat SEO) — вся потрібна інформація

Коротке визначення Чорного SEO Чорне СЕО (або Чорна оптимізація) — це будь-яка практика, метою якої…

2 тижні ago

Права категорії C: кому вони потрібні та як їх отримати?

Отримання прав водія категорії C відкриває двері до професійної діяльності, пов'язаної з керуванням вантажними автомобілями.…

3 тижні ago