Разница между наследованием и интерфейсом в Java
Java - один из самых популярных и широко используемых языков программирования. Java уже много лет является одним из самых популярных языков программирования. Java объектно-ориентирована. Однако он не считается чисто объектно-ориентированным, поскольку он обеспечивает поддержку примитивных типов данных (таких как int, char и т. Д.). В этой статье мы поймем разницу между двумя наиболее важными концепциями в java, наследованием и интерфейсом.
Интерфейс: Интерфейсы - это чертежи классов. Они указывают, что должен делать класс, а не как. Подобно классу, интерфейс может иметь методы и переменные, но методы, объявленные в интерфейсе, по умолчанию являются абстрактными (т. Е. Они содержат только сигнатуру метода, а не тело метода. Интерфейсы используются для реализации полной абстракции.
Наследование: это механизм в java, с помощью которого одному классу разрешается наследовать функции другого класса. В java возможно множественное наследование. Они есть:
- Одиночное наследование: при одиночном наследовании подклассы наследуют свойства одного суперкласса. На изображении ниже класс A служит базовым классом для производного класса B.
- Многоуровневое наследование: при многоуровневом наследовании производный класс будет наследовать базовый класс, а также, как и производный класс, действовать как базовый класс для другого класса. На изображении ниже класс A служит базовым классом для производного класса B, который, в свою очередь, служит базовым классом для производного класса C. В Java класс не может напрямую обращаться к членам прародителя.
- Иерархическое наследование: в иерархическом наследовании один класс служит суперклассом (базовым классом) для более чем одного подкласса. На изображении ниже класс A служит базовым классом для производного класса B, C и D.
В следующей таблице описаны различия между наследованием и интерфейсом:
Категория | Наследование | Интерфейс |
---|---|---|
Описание | Наследование - это механизм в java, с помощью которого одному классу разрешается наследовать функции другого класса. | Интерфейс - это план класса. Он определяет, что должен делать класс, а не как. Как и класс, интерфейс может иметь методы и переменные, но методы, объявленные в интерфейсе, по умолчанию являются абстрактными (только подпись метода, без тела). |
Использовать | Он используется для получения функций другого класса. | Он используется для полной абстракции. |
Синтаксис | class subclass_name расширяет superclass_name { } | interface <interface_name> { } |
Число наследования | Он используется для предоставления 4 типов наследования. (многоуровневое, простое, гибридное и иерархическое наследование) | Используется для предоставления 1 типа наследования (множественного). |
Ключевые слова | Он использует ключевое слово extends. | Он использует ключевое слово Implements. |
Наследование | Мы можем наследовать меньшие классы, чем интерфейс, если мы используем наследование. | Мы можем унаследовать гораздо больше классов, чем наследование, если будем использовать интерфейс. |
Определение метода | В случае наследования методы могут быть определены внутри класса. | В случае интерфейса методы не могут быть определены внутри класса (кроме использования статических ключевых слов и ключевых слов по умолчанию). |
Перегрузка | Это перегружает систему, если мы пытаемся расширить множество классов. | Система не перегружена, сколько бы классов мы ни реализовали. |
Предоставляемая функциональность | Не обеспечивает функции слабого сцепления. | Обеспечивает функцию слабой связи. |
Множественное наследование | Мы не можем выполнять множественное наследование (вызывает ошибку времени компиляции). | Мы можем выполнять множественное наследование с помощью интерфейсов. |
Вниманию читателя! Не прекращайте учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по приемлемой для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .