Не могу понять для чего нужны интерфейсы и как их грамотно юзать в интернетах написано до того что бы один метод описаный в интерфейсе (который подходит к двум классам) юзать , а почему нельзя этот метод создать так же в разных классах?
Ремонтируем подводную лодку: крепление винта — 16-листовая резьба с 29 дюймами (только что выдумал). Не нужно каждый раз делать новую подводную лодку - нужно заменить винт согласно характеристикам. Какой винт будет - реализация. Необходимые параметры для того, чтобы винт подошел - и есть интерфейс.
Представь у тебя есть какой-нибудь метод, который принимает в агрументах объект, например, типа User
doSomething(User user)
Ты можешь передавать в этот метод любой объект типа User или объекты классов, наследующих User.
Но можно сделать еще гибче, например описать некий интерфейс UserInteface и указать в определении метода его:
doSomething(UserInterface user)
Теперь ты можешь передавать в метод объект любого класса, который реализует интерфейс UserInterface.
Разумеется, изначальный класс User из этого примера тоже должен реализовывать этот интерфейс.
То есть, указывая в типе данных параметра какой-то конкретный класс, ты привязываешься к этому классу или его наследникам, а указывая интерфейс ты привязываешься к этому интерфейсу, который может реализовать любой другой класс, связность уменьшается, а это хорошо. А если ты в этих, еще не написанных классах будешь просто писать нужные методы, то не сможешь объект этих классов использовать, тип данных то будет другой, хотя методы и будут описаны.
И, как уже написали выше, один класс может реализовывать несколько интерфейсов.
4 комментариев
Добавить комментарий