Разница между абстрактным классом и интерфейсом в Java

Термин «Абстракция» означает скрытие внутренней реализации функции и только отображение функциональности для пользователей. Это означает, что абстрактный класс является классом, который частично реализуется программистом. Он может содержать один или несколько абстрактных методов. Он не может быть создан, он может использоваться только как суперкласс по своим подклассам. Эти методы - это просто определения функций, которые говорят разработчику, что метод должен быть реализован в дочернем классе. Абстрактные классы используются для создания шаблона для его подклассов, он может захватывать общие характеристики подклассов.

Интерфейс

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

Ключевыми техническими отличиями между абстрактным классом и интерфейсом являются:

  1. Абстрактный класс может иметь абстрактные и не абстрактные методы, тогда как интерфейс могут иметь только абстрактные методы. Начиная с Java 8, он может также иметь стандартные и статические методы.
  2. Абстрактные классы могут иметь константы, члены, заглушки методов (методы без тела) и определенные методы, тогда как интерфейсы могут иметь только заглушки констант и методов.
  3. Абстрактные классы могут иметь конструкторы, но интерфейсы могут иметь конструкторы.
  4. Абстрактные методы классов могут иметь модификаторы доступа с любой видимостью, но методы интерфейса неявно публичны и абстрактны .
  5. Абстрактные классы могут иметь основной метод, поэтому мы можем запускать его, тогда как интерфейс не имеет основного метода, поэтому мы не можем его запускать.
  6. Абстрактный класс может расширять один другой класс и может реализовывать один или несколько интерфейсов, но интерфейс может распространяться только на один или несколько интерфейсов.
  7. Детский класс может определять абстрактные методы с тем же или менее ограничительная видимость, тогда как класс, реализующий интерфейс, должен определять методы с одинаковой видимостью (public).
  8. По сравнению с Interf ace, абстрактный класс быстрее, чем интерфейс, потому что интерфейс несколько медленнее, так как требуется некоторое время, чтобы найти реализованный метод в классе.
  9. В абстрактном ключе ключевое слово "abstract" является обязательным для объявления метода как абстрактное, тогда как в ключе ключевое слово интерфейса «абстрактный» необязательно объявлять метод как абстрактный

Источник: http://net-informations.com/Java/cJava/abstract.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector