Какой рейтинг вас больше интересует?
|
Главная / Главные темы / Тэг «coolux»
Abstract class vs. Interface 2013-11-06 23:45:00
Долго меня мучил вопрос чем же все таки отличаются abstract class и interface в java. Если посмотреть на определение то abstract class это базовый класс, который не предполагает создания экземпляров. А Interface это описание предполагаемого поведения класса, не упоминая конкретных действий. Другими словами интерфейс предполагает только объявление методов и полей для реализующего данный интерфейс класса. Пример интерфейса A: public interface IContent { public void getUser(); public void getValue(); }
В интерфейсе все поля и методы должны быть публичными (public). В данном примере мы создали интерфейс Content и указали два метода: getUser и getValue. Теперь нам нужно создать несколько классов, которые реализуют данный интерфейс. Так как просто контента быть не может, а может быть статья, коментарий, файл на скачку ролик, поэтому нам их надо реализовать. public class Post implements IContent{ @Override public void getUser() // тут его реализация } @Override public void getValue() // тут его реализация } } ...
public class Video implements IContent{ @Override public void getUser() // тут его реализация } @Override public void getValue() // тут его реализация } }
И так далее. Вполне нормально, но метод getUser() для всех одинаков. Поэтому не самое лучшее решение в каждом классе его реализовывать. Поэтому нам лучше сделать так: public abstract class AContent { private String user; public String getUser(){ return user; } public abstract String getValue(); }
public class Post extends extends AContent{ public Post(){ // тут конструктор } @Override public void getValue() // тут его реализация } } ...
public class Video extends AContent{ public Video(){ // тут конструктор } @Override public void getValue() // тут его реализация } }
В абстрактном классе AContent мы полностью реализовали получение user. Метод получения user есть и в видео и в статье. А вот метод получения значения в абстрактном классе не определен, а только объявлен, поэтому их надо переопределить и реализовать в наследниках. Аспект | abstract class | interface | Назначение | Как любой базовый класс, представляет ядро поведения для всех наследников. Если в абстрактном классе не реализован ни один метод, имеет смысл превратить его в интерфейс. | Контракт, ничего более. Интерфейсы часто используются (и во основном предназначены для этого) как примеси без реализации при проектировании иерархии классов. | Реализация по умолчанию | Может быть частично или полностью реализован, предоставлять базовую функциональность. | Не может содержать какой-либо код. | Модификаторы доступа членов | Члены могут иметь все допустимые модификаторы доступа. | Только public. | Наследование | Наследование от абстрактного класса реализует отношение "является". | Наследование от интерфейса определяет отношение "реализует". | Множественное наследование | Класс может наследовать только один класс. | Класс может наследовать несколько интерфейсов. При этом он может и не реализовывать методы интерфейса, т. е. быть абстрактным. Сам интерфейс тоже может наследовать несколько интерфейсов. | Расширение | При добавлении нового метода в абстрактный класс, мы можешь реализовать его, тем самым не нарушив работу наследующих классов. Если тело метода оставить нереализованным, потребуется его реализация в классах-наследниках с последующей перекомпиляцией. | При добавлении нового метода в интерфейс мы должны определить его во всех классах, реализующих интерфейс, с перекомпиляцией. | Члены | Может содержать все допустимые члены. | Только методы, свойства | Вывод: 1. если есть для классов нет одинаковых методов в плане реализации, а есть только одинаковые методы в плане объявления, то лучше использовать Interface. 2. Если есть сущность действительно абстрактная и в ней можно реализовать методы для наследников, то лучше использовать abstract class. 3. Если ничего из выше перечисленного нет, то нужно сделать родительский класс от которого будите наследоваться.
Тэги: abstract, class, interface
Fresh in the Shop: French collection Roussilhe covers all bases 2013-11-06 06:06:00
+ развернуть текст сохранённая копия
Another great collection has arrived and there's lots of variety to be had from this wonderful French frame line. Roussilhe's collection offers style profiles all across the board: from colorful & contemporary, to classic, to striking but sophisticated- this frame line gives the consumer freedom to make the statement that suits them. One of many reasons this was one of the biggest orders we placed at the Silmo Frame Expo this year!
| irresistible uplifting two toned metals |
| Square rim & angular styles that pop |
| Roussilhe covers the classics with updated detail & precise fit...
|
|
| while creating variations that keep this timeless shape cool! |
Тэги: best, buy, classic, colorful, cool, evil, eyeglasses, eyes, eyewear, fall, fight, frames, fremont, glasses, great, metal, place, round, seattle, trends
UGG Classic Cardy Boots 5819 Rose 2013-11-02 14:07:30
A wooden buttons etched using uggs black friday 2013 the signature of UGG logo allow this boot to ...
+ развернуть текст сохранённая копия
A wooden buttons etched using uggs black friday 2013 the signature of UGG logo allow this boot to get one of the hottest -selling styles. This range of boots was unveiled earlier using the twelve weeks with this twelve weeks … Читать далее →
Тэги: black, boots, cheap, classic, friday, mini, online, sale, ugg, uggs, women, полезное
Status Quo – Back2SQ1 – The Frantic Four Reunion (2013) 2013-10-17 21:45:52
Artist: Status Quo Album: Back2SQ1 – The Frantic Four Reunion Genre: Classic Rock Country: UK ...
+ развернуть текст сохранённая копия
Artist: Status Quo Album: Back2SQ1 – The Frantic Four Reunion Genre: Classic Rock Country: UK Quality: 320 kbps Tracklist: 01 – Junior’s Wailing [00:04:23] 02 – Backwater [00:04:21] 03 – Just Take Me [00:03:35] 04 – Is There A Better Way [00:03:42] 05 – In My Chair [00:03:12] 06 – Blue Eyed Lady [00:03:49] 07 [...]
Тэги: classic, rock
Создатель Clash of Clans получил инвестиции в размере 1,5 млрд долларов 2013-10-16 16:45:16
Разработчику игры Clash of Clans подставили крепкое финансовое плечо для создания компании, похожей ...
+ развернуть текст сохранённая копия
Разработчику игры Clash of Clans подставили крепкое финансовое плечо для создания компании, похожей на Nindendo. Финский девелопер Supercell сообщил о получении инвестиции в размере 1,5 миллиарда долларов от двух японских компаний, издательства GungHo Online и телекоммуникационного гиганта Softbank, пишет TheVerge. По словам главного исполнительного директора Supercell Илкка Паананена, привлеченные средства пойдут на увеличение присутствия компании [...]
Тэги: clans, clash, supercell, видеоигры
Главная / Главные темы / Тэг «coolux»
|
Взлеты Топ 5
Падения Топ 5
|