Page 85 - 6253
P. 85
fig = c;
System.out.println("\tПлоща рівна:\t" + fig.area());
}
}
Запустивши програму на виконання отримаємо наступний результат:
Прямокутник:
Площа рівна: 50.0
Круг:
Площа рівна: 78.53981633974483
Як можна бачити з коментаря усередині методу main(), створення
об'єктів типу Figure недопустимо, оскільки клас визначений як абстрактний.
Це означає, що усі підкласи, які наслідують клас Figure повинні перевизначати
метод area(), інакше виникне помилка часу виконання.
4.4. Інтерфейси
Використання абстрактних класів дозволяє частину методів залишити без
реалізації, означивши лише їх поведінку. Цілковито абстрагувати клас від його
реалізації можна за допомогою інтерфейсів. Інтерфейс дозволяє визначити, що
повинен робити клас, але не говорить про те, як він це має робити.
За синтаксисом інтерфейси подібні до класів, проте у них відсутні об’єктні
змінні, а оголошені методи не мають реалізації. Якщо інтерфейс визначений, його
можна реалізувати в декількох класах. І навпаки, один клас може реалізувати
декілька інтерфейсів. Отже, у мові Java множинне наслідування реалізується через
імплементацію інтерфейсів. При реалізації інтерфейсу у класі, що його імплементує
повинні бути реалізовані усі методи, визначені в інтерфейсі. Проте клас вільний у
виборі способу реалізації кожного методу інтерфейсу.
Визначення інтерфейсу
Інтерфейси призначені для підтримки динамічної диспетчеризації методів під
час виконання програми. Якщо об’єкт одного класу викликає метод іншого класу, то
присутність обох цих класів необхідна на етапі компіляції з метою перевірки
сумісності параметрів. Інтерфейси у свою чергу переривають зв’язок між
84