2010-05-16 3 views
3

Итак, мой вопрос: зачем использовать интерфейсы или абстрактные классы? Почему они полезны и для чего?Почему интерфейс или абстрактный класс полезны? (или для чего?)

Где я могу использовать их разумно?

+0

дубликат http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo и, возможно, http://stackoverflow.com/questions/1474249/abstract-classes-vs-interfaces – mdma

+0

попробуйте ввести вопрос в google и посмотрите на результаты первого миллиона или около того. – fearofawhackplanet

+0

одно слово - полиморфизм! – nawfal

ответ

4

Интерфейсы позволяют вам выразить то, что делает тип, не беспокоясь о том, как это делается. Реализация может быть изменена по желанию без влияния на клиентов.

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

Использование и примеры зависят от языка. Если вы знаете Java, вы можете найти примеры интерфейсов и абстрактных классов в API. В коллекциях java.util много.

+0

С JDK 8 можно добавить поведение по умолчанию к интерфейсам. Абстрактные классы по-прежнему отличаются друг от друга, поскольку они могут иметь состояние. Интерфейсы могут объявлять только статические переменные. – duffymo

3

Они полезны, когда вы хотите указать набор общих методов и свойств, которые все классы, которые реализуют/наследуют от них, имеют открытое поведение, которое все должно обеспечить.

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

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

Смежные вопросы