Рубрики
Без рубрики

Java 101: Зачем нам нужно определять абстрактные методы в классе, когда в будущем нам очень понадобится переопределить его?

Подвергая сомнению основы объектно-ориентированных языков

Автор оригинала: Rashmi.

Я прочитал этот вопрос в Quora и подумал, что это очень актуальный вопрос. Только об этом мы никогда не думаем, когда изучаем абстрактные классы. Мы как бы принимаем, что объявление абстрактных классов является нормой. Продолжив самоанализ, я нашел несколько причин, которые перечислил в своем ответе. Вот оно начинается:

Зачем нам нужно определять абстрактные методы в классе, когда в будущем нам очень понадобится переопределить его?

Чтобы класс мог отложить поведение метода до конкретных реализаций. Если мы возьмем наиболее часто используемый и шаблонный пример класса Форма , метод область() не знает, что возвращать. Площадь | формы определяется видом Формы это – Квадрат или a Круг . Следовательно, Квадрат и Круг классы должны добавить реализацию метода область .

Теперь что, если нет абстрактного метода область в Форма и просто в Площадь и Кружок занятия? Допустим, на следующий день вы добавляете еще один подкласс Пентагон и забываете добавить метод area() . Тем не менее, каждая Форма должна иметь область . Как вы гарантируете, что это произойдет с помощью кода? Объявив абстрактный метод area() в Форме . Это гарантирует, что Пентагон класс не будет строиться до тех пор, пока область не будет переопределена.

Фото предоставлено: Гугл

Оригинал: “https://www.codementor.io/@rashmisaha/why-do-we-need-to-define-abstract-methods-in-a-class-when-in-future-we-will-very-well-need-to-override-it-74qozqibi”