В чем разница между абстрактным классом и интерфейсом?


Если вы когда-либо изучали или использовали Java, вы наверняка сталкивались с термином Абстракция, который означает скрытие незначительных деталей и демонстрацию того, что важно для пользователя. Другими словами, скрытие реализации функции и демонстрация функциональности функции пользователю является абстракцией. Существует два способа применения абстракции к вашему коду: абстрактный класс и интерфейс.

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

Абстрактный класс - это способ создания абстракции в Java, который не позволяет классу создавать какие-либо объекты класса. Абстрактный класс имеет как минимум одну виртуальную функцию. Вам нужно добавить абстрактное ключевое слово, чтобы сделать класс или функцию абстрактными. Поскольку вы не можете создавать объекты абстрактного класса, вам нужно наследовать абстрактный класс от другого класса, чтобы использовать функцию абстрактного класса.

Хотя и интерфейс, и абстрактный класс используются для абстракции, они все же сильно отличаются. Давайте выясним, чем они отличаются друг от друга.

Интерфейс против абстрактного класса

  • Методы: Абстрактный класс может иметь как абстрактные, так и неабстрактные методы, при этом необходим хотя бы один абстрактный метод, в то время как Interface может иметь только абстрактные, статические, приватные и приватные статические методы.
  • Реализация: Абстрактный класс может использоваться для реализации интерфейса, в то время как обратное невозможно. Вы не можете реализовать абстрактный класс, используя интерфейс.
  • Типы членов класса: Абстрактный класс может иметь открытые, закрытые или защищенные члены класса, в то время как члены интерфейса являются открытыми по умолчанию.
  • Типы переменных: переменные в абстрактном классе могут иметь конечный, не окончательный, статический и нестатический типы, в то время как в интерфейсе переменные всегда имеют статический или конечный тип.
  • Множественное наследование: абстрактный класс поддерживает множественное наследование, в то время как интерфейс не может обеспечить простоту множественного наследования для пользователя.
  • Расширения: Интерфейс Java может расширять только другой Интерфейс, тогда как Абстрактный Класс может расширять класс Java и может реализовывать несколько интерфейсов.

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

Надеюсь, теперь вы знаете разницу между двумя способами реализации Abstraction в вашем коде. Удачного кодирования!
В чем разница между абстрактным классом и интерфейсом? В чем разница между абстрактным классом и интерфейсом? Reviewed by Admin on марта 03, 2020 Rating: 5

Комментариев нет: