В чем разница между интерфейсом и абстрактным классом?

max аватар
140
Находится в разделах:

Абстрактный класс может содержать код в телах методов, что является недопустимым в случае с интерфейсами. Работая с абстрактными классами, необходимо наследоваться от них. Также в java запрещено множественное наследование. Что касается интерфейсов - вы можете реализовывать их в своих классах.


Конец
Иммануил Кант абсолютно уверен в том, что если дать человеку все, чего он желает, то в ту же минуту он почувствует, что это все не есть все.

Я вообще не понимаю разницы между интерфейсами и классами в Java, тем более что различие между классами и интерфейсами посягает на фундаментальную сущность языка Java, которая заключается в том, что "всё есть объект".

max аватар

Я сперва тоже долго въезжал. Лучше всего говорить, что класс - отвечает на вопрос "кто такой?", а интерфейс "что умеет?".

Вот, например, есть интерфейс Serializable. Он как бы дает дополнительный функционал классу. 

То есть, если класс implements Serializable, то про него можно сказать, что он умеет сериализоваться. 

 

Как в ролевой игре. Представьте, что класс - ваш персонаж, а интерфейсы - его скилы, навыки. 

 

Например, класс Hero

И выдумаем интерфейсы:

Kill

Fight

Love

Fuck

Так вот если Hero implements Kill - он уже научился убивать

implements Fight - научился драться и т.д.

 

Например, если в интерфейсе Kill есть метод public void KillByLeg();

То если Hero implements Kill, как бы умеет убивать, он должен реализовать (описать), как он будет убивать ногой конкретно (KillByLeg() )

 

Как-то так...

Fruzenshtein аватар

Реально интересный подход к этому вопросу. Раньше такого не читал ещеUndecided

 

+1 за такое изложение вопроса. Очень здорово получилосьCool

SyFyKid аватар

Интересное объяснение!

+1

согласен, запоминается хорошо

А вот для меня интерфейсы пока загадка... Буду курить ваше описание, пока не въеду полностью (но что-то подсказывает, что это будет непродолжительно). Спасибо!

void аватар

max аватар

Шикарная развязка, браво!Cool

void аватар

немного развил =)

void аватар

к стати недостаток расширения функциональности через наследование на лицо!

имеем класс MovieAction нам необходимо сделать его потоковым - наследуем от Thread. и все! больше предков накинуть не  сможем. а интерфейсов может быть сколько душе угодно ) да и вообще считается хорошей практикой  работать через интерфейсы а не через наследование

упала под стол :D

В субботу экзамен по яве, если я напишу что-нить в таком духе, гарантирвоанно А )))))

Отправить комментарий

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке