Страница 1 из 1
Abstract class VS interface
Добавлено: 10 мар 2013, 19:24
aradon
Привет друзья.
Итак, я как честный человек, пытаюсь постигнуть программирование под андройд начиная с самого языка Java. Дошел значит до таких понятий как абстрактный класс и интерфейс. В моей голове без проблем отложилось, что в них задаются методы, которые обязаны быть в подклассах. В асбтрактном классе еще могут быть поля, в интерфейсе могут быть только методы. Ок. Но никак не могу понять, для чего используются интерфейсы? Ну почему, например, не сделать абстрактный класс просто? Кто-то может просветить? В каких ситуациях чем пользоваться?
Re: Abstract class VS interface
Добавлено: 10 мар 2013, 20:21
rezak90
Представь что интерфейс это розетка, а классы в которых ты реализовываешь этот интерфейс это вилка, так вот розетка то одна и под неё подходят n-ное число вилок. В своё время я так понял интерфейсы.
Re: Abstract class VS interface
Добавлено: 10 мар 2013, 20:33
Finch
По сути интерфейс заменяет множественное наследование =)
Re: Abstract class VS interface
Добавлено: 11 мар 2013, 02:39
neoksi
Понимание приходит во время практики.
Абстрактные классы служат для создания общего родителя для классов, в нем описывается все, что должно быть обязательно реализовано в предках этого класса. Другими словами это общеизвестный шаблон, зная который мы можем точно обращаться к методам его предков.
Интерфейсы же служат для создания мостиков между блоками программы. К примеру мы пишем свой компонент календарика, в нем реализовываем интерфейс, в который календарь отправляет данные при нажатии на дату. Для того чтоб использовать календарь у себя в программе, мы создаем его клон, а чтоб из него в основной программе получить данные выбора, мы подключаемся к его интерфейсу.
Re: Abstract class VS interface
Добавлено: 11 мар 2013, 12:44
aradon
Нда, что-то туговато у меня это в голове откладывается. Вернее в теории я все понял. Спасибо хорошей статье на хабре (
тык), и вам конечно, друзья. Но вот придумать у себя в голове какую-то ситуацию, в которой надо было бы использовать одно или другое не получается... Наверное действительно придет со временем и с практикой...
Re: Abstract class VS interface
Добавлено: 20 мар 2013, 21:26
behzodbek
aradon писал(а):Нда, что-то туговато у меня это в голове откладывается. Вернее в теории я все понял. Спасибо хорошей статье на хабре (
тык), и вам конечно, друзья. Но вот придумать у себя в голове какую-то ситуацию, в которой надо было бы использовать одно или другое не получается... Наверное действительно придет со временем и с практикой...
Для этого надо хорошенько изучить JavaCore. Вы лучше ищите в Гугле. Там есть детальные статьи. Например невозможно брать экземпляр с Интерфейса(Объекты) но интерфейс может ссылать хоть на любой объект которое наследует его. итд. В интерфесе невозможно реализовать методы. А в Абстрактных классах можно. Можно и оставлять их Абстрактным чтобы наследники переопределили. Их много разниц. Гугл вам в помощь
Re: Abstract class VS interface
Добавлено: 21 мар 2013, 11:17
Mikhail_dev
В интерфесе невозможно реализовать методы.
Хотите извращенства? Как-то так! =)
P.S. внутренний класс всегда статический. В итоге интерфейс.класс.метод()
Код: Выделить всё
public interface Levels{
class Items {
public String value;
public String path;
public String getValue() {return value;}
}
}
Вообще в Java столько всего, что куда позже уже начинаешь вникать в неё.