Что такое повышение и понижение приведения в Java? Простое объяснение

Опубликовано: 2021-01-22

Оглавление

Повышение и понижение приведения в Java

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

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

  • Child c = new Child(): Доступ ко всем членам, входящим в дочерние и родительские классы.
  • Parent p = new Child(): обращается только к членам родительского класса, а также к методам, которые были переопределены в дочернем классе.

По сути, приведение типа «родительский к дочернему» известно как «восходящее преобразование», а приведение типа «дочерний к родительскому» называется «нисходящим преобразованием».

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

Как понижающее, так и восходящее приведение являются важными элементами Java и позволяют людям разрабатывать сложные программы с использованием простого синтаксиса. У них также есть некоторые большие преимущества, такие как группировка различных объектов вместе или полиморфизм.

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

Преобразование

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

Следующий пример может помочь лучше понять процесс.

Пример: существует класс животных, в котором представлены различные классы животных, одним из которых является рыба. Теперь, если предположить, что класс животных расширен классом рыб, будет два пути наследования. Наследование — один из ключевых аспектов объектно-ориентированного программирования или ООП, который позволяет одному классу наследовать функции другого. Это подразумевает производный класс, который является надмножеством базового класса. Здесь может быть больше методов, чем в базовом классе. Во время восходящего приведения единственное, что может случиться с интерфейсом класса, это то, что он может в конечном итоге потерять методы, а не получить их. В результате компилятор разрешает повышающее приведение без каких-либо специальных обозначений или явного приведения.

Композиция против наследования

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

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

Понижение

Понижающее приведение — это еще одна форма приведения типа объекта, которая используется для назначения объекта ссылки подкласса родительскому классу, что не разрешено в Java. Downcast не слишком сложно понять. Например, если есть базовый класс и класс, который либо косвенно, либо косвенно является производным от базового класса, то каждый раз, когда объект типа базового класса переходит к приведению типа в производный класс, он называется нисходящим преобразованием. Следовательно, согласно понижающему приведению, можно было бы спуститься по диаграмме наследования, стремясь взять объект базового класса, а затем преобразовать его в тип производного класса. Однако важно отметить, что в зависимости от написанного кода понижение может иметь или не иметь смысла.

Когда люди применяют систему понижения приведения, они не сталкиваются ни с какими ошибками компилятора. Однако они столкнутся с java.lang.ClassCastException, которое является исключением времени выполнения. Итак, теперь возникает вопрос, если в Java невозможно приведение вниз, то почему люди его выполняют? Проще говоря, понижающее приведение может использоваться только в определенных ситуациях, когда объект, на который ссылается родительский класс, принадлежит подклассу.

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

Чтобы проверить, действительно ли понижающее приведение или нет, можно запустить

Система getClass() позволяет разработчикам понять класс передаваемого объекта и впоследствии сравнить его с текущим классом. Если они не равны, то приведение вниз не будет действительным, и пробовать этот процесс будет бессмысленно. Концепция приведения вниз в основном использует приведение супертипов к подтипам. Такой процесс литья обычно выполняется явным образом. В основном это означает, что типы большего размера явно вписываются в типы меньшего размера.

Повышение против понижения

Повышение и. Даункастинг имеет некоторые очень специфические отличия. Некоторые из них были кратко подчеркнуты в следующих указателях:

  • В Upcasting дочерний объект приводится к родительскому объекту. С другой стороны, ссылка на объект родительского класса в конечном итоге передается дочернему классу, когда дело доходит до понижения.
  • Люди могут выполнять преобразование вверх как явно, так и неявно, в то время как преобразование вниз можно выполнять только явно.
  • В случае восходящего приведения люди могут получить доступ к переменным и методам родительского класса в дочернем классе, но не наоборот. Однако при понижающем приведении переменные и методы обоих классов легко доступны.
  • Повышение приведения разрешает доступ только к определенным методам дочернего класса. При выполнении понижающего приведения все методы и переменные, относящиеся к обоим классам, становятся доступными.

Заключение

Upcasting редко используется в Java. В большинстве случаев люди используют его, когда им нужно разработать код, который имеет дело только с родительским классом. Когда дело доходит до разработки кода, обеспечивающего доступ к поведению дочернего класса, обычно используется понижающее приведение.

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

Станьте разработчиком полного стека

ПОДАТЬ ЗАЯВКУ НА МАСТЕРА КОМПЬЮТЕРНЫХ НАУК ОТ ЛИВЕРПУЛЯ ДЖОН МУРС