В общем. Штука какая.
Начнем с того, что множественное наследование классов, во многих ЯП, запрещено.
Но иногда очень хочется, правда ведь?
Есть интерфейсы. В них вы описываете, что они будут делать (перечисляете методы). Например, пользователь системы может быть клиентом банка, а может быть внутренним сотрудником. А если он клиент, то он еще может быть юр.лицом (фирма) или физ.лицом (просто Ваня, который оформил кредит в банке).
Так вот. Этот Ваня, может реализовывать интерфейс пользователя системы (логиниться, в личный кабинет смотреть, получать уведомления и другие, общие для всех операции) и может реализовывать интерфейс физлица (смотреть свои счета, выпускать карты, делать вклады, платить за телефон).
Две разные сущности сосредоточены в Ване - неплохо было бы их разграничить
Ну это так, приквел...
Вообще, попробуйте разобраться вот с этой статьей (
metanit.com/sharp/tutorial/3.9.php). Она про C#, но идея интерефейса такая же, да и код не должен показаться вам совсем уж непонятным.
Но расписано вполне себе доступно
А как только разберетесь, что такое интерфейс и зачем он, вот вам вопрос, который задают на собеседованиях: в каких случаях использовать интерфейс, а в каких - абстрактный класс?
Удачи