2022-09-09 14:29:46
abstract class vs interfaceОчень популярный вопрос с собеседований. Кажется, что он банален, и все знают, как отвечать. Однако, на этом публичном интервью
парень откровенно плавает.
Фишка в том, что
вопрос риторический. Ответ «одно лучше другого, потому что…» будет неправильным, ведь цель вопроса узнать ваше
понимание инструмента.
Если прислушаться к постановке вопроса интервьюером в том видео, ссылку на которое оставлена, то можно услышать подсказку:
«а зачем нам и то, и другое, если это одно и тоже?»То есть уже есть намёк на то, что нужно рассказывать
о кейсах, где каждый из инструментов применим. Остановимся на этом поподробнее.
Суть различия даже не в том, что в класс можно засунуть данные, а в интерфейс - нет. Это как раз сделать можно с помощью свойств или get/set методов.
Когда мы строим «классовую» иерархию наследования, подразумевается, что будут использоваться
родственные сущности. Например, животные: дикие, домашние, кошки, собаки и так далее.
Когда мы проектируем интерфейс, то подразумеваем, что существует
набор никак не связанных друг с другом сущностей, похожих по выполняемым действиям. Например, объект, который может говорить: человек, робот, попугай, инопланетянин и так далее.
658 viewsedited 11:29