Абстрактный класс в Java и методы [с примерами]

Опубликовано: 2021-06-18

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

Оглавление

Абстракция

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

В Java абстракция достигается за счет абстрактных классов и интерфейсов.

Абстрактный класс в Java

Ключевое слово «абстрактный» используется для абстрактных классов и методов в Java. Абстрактный класс имеет ключевое слово abstract в своем объявлении.

Синтаксис абстрактного класса Java:

абстрактный класс имя_класса

{

публичный абстрактный недействительным the_abstractMethod();

публичная пустота the_normalMethod()

{

#тело метода

}

}

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

Вот несколько свойств абстрактных классов:

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

Абстрактные методы

Абстрактные методы — это те типы методов, которые не требуют реализации для их объявления. Эти методы не имеют тела, что означает отсутствие реализации. Несколько свойств абстрактного метода:

  • Абстрактный метод в Java объявляется с помощью ключевого слова «abstract».
  • При объявлении абстрактного метода ключевое слово abstract должно быть помещено перед именем метода.
  • В абстрактном методе нет тела, присутствует только сигнатура метода.
  • Абстрактный метод в Java не имеет фигурных скобок, но в конце метода будет точка с запятой (;)

абстрактный двойной метод (двойной n1, двойной n2);

  • Любой класс, содержащий абстрактный метод, должен быть объявлен как абстрактный класс. Хотя обратное может быть неверным, т.е. нет необходимости, чтобы абстрактный класс имел абстрактный метод.
  • Наследование абстрактного класса обычным классом требует реализации всех абстрактных методов в родительском классе.

Пример абстрактного метода

публичный абстрактный класс Car

{

частная модель String;

цвет частной строки;

частный год;

публичный абстрактный двойной computerPrice();

}

Если производные классы не реализуют абстрактные методы, это приведет к тому, что абстрактные классы не могут быть созданы.

Некоторые из них нельзя использовать с ключевым словом abstract в Java.

  • окончательный
  • абстрактный родной
  • абстрактный статический
  • абстрактный частный
  • абстрактный синхронизированный
  • абстрактный

Код, демонстрирующий использование абстрактного метода в Java , показан ниже.

Источник

Вывод кода:

Java-интерфейсы

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

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

Интерфейс похож на абстрактный класс Java в следующих отношениях:

  • В интерфейсе может содержаться любое количество методов.
  • Расширение .java используется для записи интерфейса в файл. Имя файла должно совпадать с именем интерфейса.
  • Файл .class содержит байтовый код интерфейса.
  • Интерфейсы появляются в пакетах. Файл байт-кода интерфейса находится в каталоге с тем же именем, что и имя пакета.

Интерфейс отличается от абстрактного класса Java следующими способами:

  • Интерфейс не может быть создан.
  • В интерфейсе нет конструкторов.
  • Интерфейс содержит только абстрактные методы.
  • В интерфейсе нет полей экземпляра. Поле должно быть объявлено как статическое, так и финальное, если оно должно отображаться в интерфейсе.
  • Только класс может реализовать интерфейс, но не может быть расширен.
  • Интерфейс может расширять несколько интерфейсов.

Изучайте онлайн-курсы по программному обеспечению от лучших университетов мира. Участвуйте в программах Executive PG, Advanced Certificate Programs или Master Programs, чтобы ускорить свою карьеру.

Свойства интерфейса

  • Нет необходимости объявлять интерфейс абстрактным с помощью ключевого слова abstract , поскольку он неявно абстрактен.
  • Ключевые слова abstract не требуются для объявления методов абстрактными, поскольку они неявно абстрактны.
  • Все методы в интерфейсе неявно общедоступны.

Как объявить интерфейс?

Ключевое слово «интерфейс» используется для объявления интерфейса. Полная абстракция обеспечивается за счет использования интерфейса. По умолчанию все методы интерфейса являются абстрактными и общедоступными. Это означает, что в интерфейсе нет ни одного метода, и все поля являются статическими, общедоступными и окончательными.

Синтаксис интерфейса:

Имя интерфейса_of_the_interface {

# объявить поля

# объявляем абстрактные методы

}

Например, интерфейс Player

{

конечный возраст = 40;

вычислить();

}

Как реализовать интерфейс?

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

Пример реализации интерфейса показан ниже:

класс Maruti реализует автомобиль

Пример кода, показывающий реализацию интерфейса на Java, показан ниже.

Источник

Код генерирует следующий вывод:

Код, применяющий реализацию нескольких интерфейсов, показан ниже.

Источник

Код генерирует следующий вывод:

Какой-то текст…

Какой-то другой текст…

Почему используется интерфейс?

  • Интерфейсы используются для достижения полной абстракции.
  • Множественное наследование в Java может быть достигнуто за счет использования наследования, поскольку Java не поддерживает множественное наследование.
  • Слабая связь может быть достигнута за счет использования интерфейса.
  • За счет использования абстракции реализации в java можно достичь.

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

Если для достижения абстракции используются и интерфейс Java, и абстрактный класс Java, когда следует использовать интерфейс и абстрактный класс?

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

Несколько преимуществ абстракции:

  • Сложность программы снижена.
  • Вероятность дублирования кода меньше, что увеличивает возможность повторного использования.
  • Безопасность программы повышается за счет использования абстракции, поскольку пользователю предоставляется лишь несколько деталей.

Заключение

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

Если вы заинтересованы в том, чтобы узнать больше и реализовать концепции в реальных задачах, вы можете ознакомиться с курсом магистра компьютерных наук , предоставляемым upGrad и IIIT-Bangalore , признанным Ливерпульским университетом Джона Мура . Курс предназначен для профессионалов начального уровня (21-45 лет), обеспечивая более 500 часов обучения у ведущих экспертов отрасли и факультетов разработки программного обеспечения. Более подробную информацию о курсе можно найти на официальном веб-сайте upGrad.

Повышай свою квалификацию и будь готов к будущему

Подать заявку на участие в программе Executive PG по разработке программного обеспечения от IIIT-B