Какой рейтинг вас больше интересует?
|
Abstract class vs. Interface2013-11-06 23:45:00 (читать в оригинале) Долго меня мучил вопрос чем же все таки отличаются abstract class и interface в java.
Если посмотреть на определение то abstract class это базовый класс, который не предполагает создания экземпляров. А Interface это описание предполагаемого поведения класса, не упоминая конкретных действий. Другими словами интерфейс предполагает только объявление методов и полей для реализующего данный интерфейс класса. Пример интерфейса A: public interface IContent {В интерфейсе все поля и методы должны быть публичными (public). В данном примере мы создали интерфейс Content и указали два метода: getUser и getValue. Теперь нам нужно создать несколько классов, которые реализуют данный интерфейс. Так как просто контента быть не может, а может быть статья, коментарий, файл на скачку ролик, поэтому нам их надо реализовать. public class Post implements IContent{И так далее. Вполне нормально, но метод getUser() для всех одинаков. Поэтому не самое лучшее решение в каждом классе его реализовывать. Поэтому нам лучше сделать так: public abstract class AContent { В абстрактном классе AContent мы полностью реализовали получение user. Метод получения user есть и в видео и в статье. А вот метод получения значения в абстрактном классе не определен, а только объявлен, поэтому их надо переопределить и реализовать в наследниках.
Вывод: 1. если есть для классов нет одинаковых методов в плане реализации, а есть только одинаковые методы в плане объявления, то лучше использовать Interface. 2. Если есть сущность действительно абстрактная и в ней можно реализовать методы для наследников, то лучше использовать abstract class. 3. Если ничего из выше перечисленного нет, то нужно сделать родительский класс от которого будите наследоваться.
|
Категория «Поп звезды»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.
взяты из открытых общедоступных источников и являются собственностью их авторов.