Разберем вопрос отличие абстрактного класса от интерфейса.

Копаясь в интернете я до сих пор встречаю вопросы от пользователей в чем же отличия абстрактного класса от интерфейса. Как оказалось он до сих пор актуален среди работодатель, которые вовремя собеседования предлагают ответить на этот вопрос. При чем некоторые из них пытаются сбить столку начинающего программиста, дают код и предлагают объяснить в чем разница.

Можете посмотреть код и подумать в чем разница:

Кто то смотря на него пытается сравнить методы и переменные. Но это все не верно. Верным ответом на этот вопрос будет разница приведенного блока код в наследовании.

Начнем с теории. В абстрактных классах можно реализовать методы без ключевого слова abstract которые могут содержать тело метода. Вот пример:

А вот в интерфейс методы можно только объявить, тела они не могут иметь.

Теперь подробно разберем наследования интерфейса и абстрактного класса в примерах. Создадим два интерфейса у моих имя One_Interface и Two_Interface, объявим в нем переменную и методы. Так же создадим один абстрактный класс с именем One_Abstract и объявим  в нем переменную и методы. Смотрим что у меня получилось.

Теперь перейдем в главный класс в котором создадим два внутренних класса. Один класс будет наследоваться от абстрактного класса и реализует все его методы. Второй класс будет наследовать одновременно оба интерфейса и реализовывать их методы. Можете посмотреть мой код ниже как у меня это получилось.

Результатом работы программы будет:

Мы использовали 1 метод абстрактного класса
Мы использовали 2 метод абстрактного класса
Мы использовали 1 метод интерфейса
Мы использовали 2 метод интерфейса
Мы использовали 3 метод интерфейса
Мы использовали 4 метод интерфейса

Обновлено: 08.04.2017 — 11:31

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.