7 Класи
2. Спадкування й полiморфiзм для статичних членiв не пiдтримуються.
7.9 Абстрактнi класи, методи, властивостi
Нехай в компанiï працюють спiвробiтники та є клiєнти. Необхiдно друкувати ïх прiзвище, iм’ я та для спiвробiтникiв назву вiддiлу. А для клiєнтiв назву ïхньоï компанiï. Знов розглянемо клас Person. Програма буде працювати з об’ єктами спiвробiтники й клiєнти. Тому утворювати екземпляри класу Person не має необхiдностi. В такому випадку краще працювати з абстрактними класами.
Такий клас має наступнi особливостi:
– не можна створювати екземпляри абстрактного класу;
– абстрактний клас може мiстити як абстрактнi методи / властивостi, так i звичайнi;
– у класi спадкоємцi повиннi бути реалiзованi всi абстрактнi методи й властивостi, що оголошенi в базовому класi.
Абстрактний клас оголошується iз ключовим словом abstract:
abstract class iмя [’ класу _] { // тiло
}
Абстрактний метод – це метод, який не має своєï реалiзацiï в базовому класi, i вiн повинен бути реалiзований у класi-нащадку. Абстрактний метод може бути оголошений тiльки в абстрактному класi.
Оголошення абстрактного методу вiдбувається за допомогою ключового слова abstract, i при цьому фiгурнi дужки упускаються, крапка з коми ставиться пiсля заголовка методу: ж
модифiкатор [ доступу ] abstract тип [] iмя [’ методу ] аргументи([]);
Модифiкаторами доступу до абстрактних класiв можуть бути: public, protected, internal, protected internal. Реалiзацiя абстрактного методу в класi спадкоємцi вiдбувається так само, як i перевантаження вiртуального методу – за допомогою ключового слова override:
модифiкатор [ доступу ] override тип [] iмя [’ методу ] аргументи([]) { // реалiзацiя методу
}
152