Рекомендуем, 2024

Выбор редакции

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

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

Сравнительная таблица

Основа для сравненияУчебный классИнтерфейс
основнойКласс создается для создания объектов.Интерфейс никогда не может быть создан, так как методы не могут выполнить никаких действий при вызове.
Ключевое словоучебный классинтерфейс
Спецификатор доступаЧлены класса могут быть частными, публичными или защищенными.Члены интерфейса всегда общедоступны.
методыМетоды класса определены для выполнения определенного действия.Методы в интерфейсе являются чисто абстрактными.
Реализовать / ПродлитьКласс может реализовывать любое количество интерфейсов и может расширять только один класс.Интерфейс может расширять несколько интерфейсов, но не может реализовывать какой-либо интерфейс.
КонструкторКласс может иметь конструкторы для инициализации переменных.Интерфейс никогда не может иметь конструктора, поскольку вряд ли есть переменная для инициализации.

Определение класса

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

 class имя_класса {/ * поля ... методы * /} 

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

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

Определение интерфейса

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

 имя интерфейса имя_интерфейса {тип var_name = значение; type method1 (список параметров); type method2 (список параметров);, , } 

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

Созданный интерфейс может быть реализован любым количеством классов с использованием ключевых слов. Но классы, реализующие интерфейс, должны определять все методы внутри интерфейса. Интерфейс также может наследовать другой интерфейс, используя ключевое слово extends. Если класс реализует интерфейс, который расширяет другой интерфейс. Затем класс должен определить методы обоих интерфейсов, появляющихся в цепочке. Методы внутри интерфейса всегда должны быть открытыми, так как к ним должны обращаться классы, их реализующие.

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

  1. Класс может быть создан путем создания его объектов. Интерфейс никогда не создается, так как методы, объявленные внутри интерфейса, являются абстрактными и не выполняют никаких действий, поэтому нет смысла создавать экземпляры какого-либо интерфейса.
  2. Класс объявляется с использованием ключевого слова class. Таким же образом интерфейс создается с использованием интерфейса ключевых слов.
  3. Члены класса могут иметь спецификатор доступа, например public, private, protected. Но члены интерфейса всегда общедоступны, так как к ним должны обращаться классы, их реализующие.
  4. Методы внутри класса определены для выполнения действий над полями, объявленными в классе. Поскольку в объявлении полей отсутствует интерфейс, методы внутри интерфейса являются чисто абстрактными.
  5. Класс может реализовывать любое количество интерфейсов, но может расширять только один суперкласс. Интерфейс может расширять любое количество интерфейсов, но не может реализовывать какой-либо интерфейс.
  6. Класс имеет конструкторы, определенные внутри него, чтобы инициализировать переменную. Но интерфейс не имеет конструкторов, так как нет полей для инициализации. Поля интерфейса инициализируются только во время их объявления.

Заключение:

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

Top