В каких случаях следует использовать абстрактный класс, а в каких интерфейс?
Answer from sobes.tech neural network
Абстрактный класс:
Когда нужна общая реализация поведения для подклассов, но при этом требуется гибкость в переопределении некоторых методов.
Когда классы обладают общими полями состояния (переменными экземпляра), которые должны быть унаследованы.
Когда можно определить "родство" между классами (отношение "это один из", "is-a").
Когда нужно предоставить реализацию по умолчанию для большинства методов, требуя при этом, чтобы подклассы реализовали только специфичные для них методы.
Интерфейс:
Когда нужно определить контракт поведения, который могут реализовывать несвязанные классы.
Когда класс должен иметь несколько типов (множественное наследование типа).
Абстрактный класс:
Когда нужна общая реализация поведения для подклассов, но при этом требуется гибкость в переопределении некоторых методов.
Когда классы обладают общими полями состояния (переменными экземпляра), которые должны быть унаследованы.
Когда можно определить "родство" между классами (отношение "это один из", "is-a").
Когда нужно предоставить реализацию по умолчанию для большинства методов, требуя при этом, чтобы подклассы реализовали только специфичные для них методы.
Интерфейс:
Когда нужно определить контракт поведения, который могут реализовывать несвязанные классы.
Когда класс должен иметь несколько типов (множественное наследование типа).
Register or sign in to get access to full answers for all questions from the question bank.