Что такое подкласс в java

Наследование

Содержание

Наследование — это процесс перенимания классом свойств (методов и полей) другого класса. С использованием в Java наследования информация становится управляемой в иерархическом порядке.

Класс, который наследует свойства другого класса, называется подклассом (производным классом, наследующим классом), а класс, свойства которого наследуются, известен как суперкласс (базовый класс, родительский класс)

Ключевое слово extends

extends — это кодовое слово, используемое для наследования свойств класса. Взглянем на синтаксис этого ключевого слова.

Синтаксис

Пример кода

Дальше приведён пример процесса наследования на Java. На этом примере Вы можете рассмотреть два класса с именами Calculator и My_Calculator.

Используя ключевое слово extends в Java, My_Calculator перенимает методы addition() и subtraction() класса Calculator.

Скопируйте и вставьте эту программу в файле под именем My_Calculator.java

Скомпилируйте и выполните вышеприведённый код, как показано ниже.

После запуска программы получим следующий результат:

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

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

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

Обращаясь к программе выше, Вы можете создать экземпляр класса, как в примере ниже. Но, используя ссылочную переменную суперкласса, Вы не можете вызвать метод multiplication(), который принадлежит подклассу My_Calculator.

Примечание: подкласс наследует все члены (поля, методы, вложенные классы) из суперкласса. в Java конструкторы не являются членами, поэтому они не наследуются подклассом, но конструктор суперкласса может быть вызван из подкласса.

Ключевое слово super

Ключевое слово super схоже с ключевым словом this. Ниже приведены случаи, где используется super в Java.

Дифференциация членов

Если класс перенимает свойства другого класса, и члены суперкласса имеют те же имена, что и в подклассе, для их разделения мы используем ключевое слово super, как показано ниже.

Пример кода

Этот раздел содержит программу, которая демонстрирует использование ключевого слова super в Java.

В предложенной программе у вас есть два класса с именами Sub_class и Super_class, оба имеющие метод display() с разными реализациями и переменную с именем num с разными значениями. Вы можете увидеть, что мы использовали ключевое слово super для дифференциации членов суперкласса из подкласса.

Скопируйте и вставьте эту программу в файле под именем Sub_class.java.

Скомпилируйте и выполните вышеприведённый код, как показано ниже.

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

Вызов конструктора суперкласса

Если класс перенимает свойства другого класса, подкласс автоматически получается стандартный конструктор суперкласса. Но если Вы хотите вызвать параметризованный конструктор суперкласса, Вам нужно использовать ключевое слово super, как показано ниже.

Пример кода

В предложенной программе демонстрируется использование в Java ключевого слова super для вызова параметризованного конструктора. В этой программе содержится суперкласс и подкласс, где суперкласс содержит параметризованный конструктор, который принимает строковое значение, а мы используем ключевое слово super для вызова параметризованного конструктора суперкласса.

Скопируйте и вставьте эту программу в файле под именем Subclass.java

Скомпилируйте и выполните вышеприведённый код, как показано ниже.

После запуска программы будет выдан результат:

Отношение IS-A

IS-A — это способ сказать «Этот объект является типом этого объекта». Давайте посмотрим, как ключевое слово extends используется для достижения наследования.

Теперь, основываясь на примере выше, в объектно-ориентированных терминах, следующие утверждения верны

Теперь, используя отношение IS-A, мы можем сказать так:

С использованием ключевого слова extend, подклассы могут наследовать все свойства суперкласса кроме его приватных свойств (private).

Мы можем убедиться, что Mammal на самом деле Animal с использованием оператора экземпляра.

Мы получим следующий результат:

Так как у нас есть хорошее понимание принципа работы ключевого слова extends, давайте рассмотрим, как используется ключевое слово implements для получения отношения IS-A.

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

Пример

Ключевое Слово instanceof

Давайте использует оператор instanceof в Java с целью проверки, являются ли Mammal и Dog на самом деле Animal.

Пример

Мы получим следующий результат:

Отношение HAS-A

Эти отношения в основном основаны на обращении. Они определяют, является ли определенный класс HAS-A определенным случаем. Эта взаимосвязь помогает уменьшить дублирование кода, а также баги. Взглянем на пример.

Мы видим, что у класса Van HAS-A (есть) Speed. Имея отдельный класс Speed, нам не нужно вставлять код, принадлежащий Speed в класс Van, что позволяет нам использовать класс Speed в нескольких приложениях.

В особенности объектно-ориентированного программирования, пользователям не нужно волноваться о том, какой объект выполняет текущую работу. Для достижения этого, класс Van скрывает детали реализации от пользователей класса Van. Таким образом, пользователи, должны попросить класс Van выполнить определенное действие, и класс Van либо выполнит работу сам по себе, либо попросит другой класс выполнить действие.

Виды наследования

Есть различные способы наследования, как показано ниже.

ВидСхемаПример
Одиночное наследование Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java
Многоуровневое наследование Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java
Иерархическое наследование Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java
Множественное наследование Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Очень важно запомнить, что Java не поддерживает множественное наследование. Это значит, что класс не может продлить более одного класса. Значит, следующее утверждение НЕВЕРНО:

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

Источник

Pro Java

Страницы

2 июл. 2015 г.

Наследование. Часть 1 – введение.

Чтобы еще раз лучше отложилось в голове:

Объявление класса-наследника

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

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

В данном примере объявляется что класс Derived является наследником класса Example.

Теперь рассмотрим простой пример. Создадим родительский класс Robot и унаследуем от него класс робота-уборщика – RobotCleaner.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Как видите в классе наследнике нет ни каких методов и полей.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

В классе с методом main() мы создаем по экземпляру классов Robot и RobotCleaner, устанавливаем имя для объекта rc и затем выводим информацию о наших роботах. И хотя в классе наследнике нет ни каких методов и полей, мы все же можем обращаться к ним, поскольку они унаследованы.

Вывод у программы следующий:

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Доступ к членам и наследование

В нашем примере поле name объявлено с модификатором private, а методы с модификатором protected. Именно по этому мы могли использовать методы, вот если попробуем получить доступ к унаследованным полям на прямую, в обход методов, то компилятор выдаст нам ошибку:

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Чтобы исправить эту ситуацию можно объявить поле name в родительском классе Robot как protected и тогда мы сможем к нему обращаться из классов наследников.

Давайте сделаем это…

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

После этих изменений ошибка исчезнет и наш класс RobotCleaner откомпилируется.

Надеюсь вы заметили что в класс RobotCleaner мы добавили метод printName(), то есть мы расширили (extends) функционал в классе наследнике.

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

Иерархия классов

Так как у каждого класса есть родитель, то классы в Java образуют иерархию классов, которая может быть представлена в виде дерева с классом Object в качестве корня.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Конструкторы подклассов

super(список_аргументов);

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в javaЧтобы все стало понятнее, попрактикуемся. Я добавил в класс Robot конструктор по умолчанию (на примере слева). Теперь вывод у программы следующий:

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Мы видим что конструктор по умолчанию был вызван два раза. Одни раз при создании объекта rb, второй – при создании объекта rc.

Здесь, пока, мы не использовали ключевое слово super, так как я хотел показать цепочку вызовов конструкторов. Именно на это и хочу обратить внимание, что Java сама подставила вызов конструктора суперкласса.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Как видно из трех отрывков кода наших классов, если мы уберем конструктор по умолчанию в классе Robot и добавим другой, с каким-либо параметром, а в классах RobotCleaner и RobotShow появятся ошибки компиляции. Обратите внимание на то, что в классе RobotCleaner нет вообще ни каких конструкторов. Java подставила туда вызов конструктора по умолчанию суперкласса, но поскольку он не определен в суперклассе Robot, то получилась ошибка компиляции.

Все это означает, что вызовы конструкторов объединяются в цепочку; при каждом создании объекта вызывается последовательность конструкторов: конструктор подкласса, конструктор родительского класса и далее вверх по иерархии классов до конструктора класса Object. Так как конструктор родительского класса всегда вызывается первым оператором конструктора подкласса, то операторы конструктора класса Object всегда выполняются первыми. Затем выполняются операторы конструктора подкласса и далее вниз по иерархии классов вплоть до конструктора класса, объект которого создается. Здесь есть важное следствие: когда вызван конструктор, он может положиться на то, что поля родительского класса уже проинициализированы.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в javaТеперь приведем наших роботов в более-менее рабочий вид. Класс Robot я оставил как есть, то есть без конструктора по умолчанию, но с конструктором принимающим строку. А вот класс RobotCleaner я изменил добавив конструктор по умолчанию, который вызывает конструктор этого же класса с параметром принимающим строку и вызывающим конструктор суперкласса, который так же принимает строку. Кажется немного замысловато, но вообще все достаточно просто. Так же пришлось изменить строку создающую объект rb в классе RobotShow. Теперь она имеет вид:

Robot rb = new Robot ( «NoNaMe» ) ;

Так пришлось сделать, поскольку в классе Robot у нас нет конструктора по умолчанию.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Теперь у нас все работает. Пример вывода программы представлен слева. Рабочий пример можно посмотреть в коммите Примеры наследования. Вызовы super и this.

Затенение полей родительского класса

В нашем классе RobotCleaner мы можем определить свое поле с именем name. В таком случае говорят что поле подкласса затеняет (shadows) или скрывает поле родительского класса. Как же мы тогда можем сослаться на поле name родительского класса Robot? Для этого существует специальный синтаксис, использующий ключевое слово super:

super.член_класса

Где член_класса может быть методом либо переменной экземпляра.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в javaЧтобы лучше понять, попрактикуемся. Я изменил класс RobotCleaner как на примере слева. Другие классы я не менял. Теперь вывод у программы следующий:

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Теперь изменим классы RobotShow, Robot и RobotCleaner, так чтобы конструктор класса RobotCleaner устанавливал значение поля name для класса RobotCleaner и оставим другой метод этого класса без изменений. В классе Robot расскоментируем конструктор по умолчанию. А в классе RobotShow создадим объект rc при помощи конструктора по умолчанию.

Таким образом мы сможем изменить значение поля name в классе RobotCleaner.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в javaВывод у программы сейчас следующий:

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в javaКак видно из вывода поле name класса RobotCleaner получило значение «Cleaner».

Первую из последних двух строчек выводит первая строка в методе printName() класса RobotCleaner, воторя – соответственно выводит вторую.

Другой способ сослаться на затененное поле – привести this (или любой экземпляр
класса) к соответствующему родительскому классу и обратиться к полю. Вспомните как мы приводили примитивные типы малой разрядности к примитивным типам бОльшей разрядности.

Вывод у программы не изменится. Мы просто поменяли метод обращения к полю name суперкласса.

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

Для примера возьмем три класса: А, В и С. Класс В является потомком класса А, а класс С потоком класса В. В каждом классе есть поле x. А так же есть методы выводящие значение поля x для каждого класса. И еще в классе А есть метод printX(), который выводит значение поля х для класса А.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

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

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Класс В использует свой метод printB() для вывода своего поля х, которое затеняет поле х, класса А.

Так же в этом методе выводится значение поля х из класса А.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Как видно из кода класса С, мы можем обратиться к полю х класса А, который не является прямым родителем класса С через приведение типов (строка 10).

Вы не можете ссылаться на затененное поле x в родителе родителя с помощью вызова super.super.x. Это неправильный синтаксис.

Благодаря приведению классов можно ссылаться на поля вышестоящих родителей, если они открыты для доступа. Пример этого приведен в строках 25-27 класса АВС.

До настоящего времени мы обсуждали поля экземпляров. Поля класса (static) также могут быть затенены. Но в этом нет особого смысла.

Вывод у данной программы следующий:

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

Первые две строки выводятся командами в строках 12 и 13 класса АВС.

Вторые три строки выводятся командами в строках 15 и 16.

Третьи четыре строки выводятся командами в строках 18 и 19.

Затем вывод делают строки 21 – 23, ну это мы уже проходили. Это простой доступ к полям экземпляров.

Ну и на последок, в строках 25 – 27 мы видим доступ к полям родителей через приведение классов. Синтаксис может показаться немного запутанным, но на самом деле он логичный и простой.

На что следует обратить особенное внимание в этом примере так это на метод printX() в классе А, и на его вызовы на экземплярах классов В и С. Не смотря на затенение поля х в этих классах, метод printX() все время выводит поле х класса А. Это происходит потому, что методы родительского класса А могут работать только с полями своего же класса, так как ни чего не знают о полях в классах потомках.

Подобно полям, могут «затенятся» и методы, но это уже называется перегрузкой (override) методов, что является основой полиморфизма о котором мы скоро поговорим.

Чтобы еще чуть лучше усвоить как работает сокрытие полей, в класс АВС можно добавить еще три строчки:

Которые будут выводить следующее:

Класс А
Класс А
Класс B
Из В Класс А

То есть метод каждого класса выводит только сове собственное поле x.

Информацию о затенении полей я привел для полноты картины и понимания, но вообще использование их – это не очень хорошая практика.

Переменная суперкласса может ссылаться на объект подкласса

Ссылочной переменной суперкласса может быть присвоена ссылка на любой объект подкласса, производного от данного суперкласса. Этот аспект наследования будет весьма полезен во множестве ситуаций. Особенно когда познакомимся с полиморфизмом. И сразу лучше покажем на примере. Добавим в наш класс АВС еще несколько строк:

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

Класс А
Класс А
Класс B
Из В Класс А

Как видите пара строк в коде закомментирована, поскольку они ошибочны и не скомпилируются. Это происходит потому, что хотя, допустим, ссылочная переменная ab и содержит ссылку на объект класса B, но она может обратиться только к тем членам класса о которых известно классу А, поскольку является ссылочной переменной этого класса.

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

Источник

Наследование в Java: классов, методов и интерфейсов

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

Наследование представляет собой отношение IS-A, которое также известно как отношение родитель-ребенок.

Наследование в программировании на Java может быть определено как процесс, в котором один класс приобретает свойства (методы и поля) другого. С использованием наследования информация становится управляемой в иерархическом порядке.

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

extends – это ключевое слово, используемое для обозначения наследования свойств класса.

Это важная часть ООП (объектно-ориентированного программирования).

Синтаксис наследования на Java

Пример наследования, здесь есть два класса, а именно: Calculation и My_Calculation.

Используя ключевое слово extends, My_Calculation наследует методы addition() и Subtraction() класса Calculation.

Скопируйте и вставьте следующую программу в файл с именем My_Calculation.java

Скомпилируйте и выполните приведенный выше код, как показано ниже.

После выполнения программы она даст следующий результат –
The sum of the given numbers:30
The difference between the given numbers:10
The product of the given numbers:200

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

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

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

Теперь создадим экземпляр класса, как указано ниже. Но используя ссылочную переменную суперкласса (в данном случае cal), вы не можете вызвать метод multiplication(), который принадлежит подклассу My_Calculation.

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

Ключевое слово super

Ниже приведены сценарии, в которых используется ключевое слово super.

Оно используется для различения членов суперкласса от членов подкласса, если они имеют одинаковые имена. И используется для вызова конструктора суперкласса из подкласса.

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

программа, которая демонстрирует использование ключевого слова super. У вас есть два класса, а именно Sub_class и Super_class, оба имеют метод display() с разными реализациями и переменную с именем num с разными значениями.

Мы вызываем метод display() обоих классов и печатаем значение переменной num обоих классов. Здесь вы можете заметить, что мы использовали ключевое слово super, чтобы отличать членов суперкласса от подкласса.

Скопируйте и вставьте программу в файл с именем Sub_class.java.

Скомпилируйте и выполните приведенный выше код, используя следующий синтаксис.

Результат
This is the display method of subclass
This is the display method of superclass
value of the variable named num in sub class:10
value of the variable named num in super class:20

Вызов конструктора суперкласса

Если класс наследует свойства другого класса, подкласс автоматически получает конструктор по умолчанию суперкласса. Но если вы хотите вызвать параметризованный конструктор суперкласса, вам нужно использовать ключевое слово super.
super(values);

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

Скопируйте и вставьте следующую программу в файл с именем Subclass.java

Скомпилируйте и выполните приведенный выше код, используя следующий синтаксис.

Результат
The value of the variable named age in super class is: 24

IS-A отношения

IS-A – это способ показать: этот объект является типом этого объекта. Давайте посмотрим, как ключевое слово extends используется для наследования.

Теперь, на основе приведенного выше примера, в объектно-ориентированных терминах верно следующее:

Теперь, если мы рассмотрим отношения IS-A, мы можем сказать –

С использованием ключевого слова extends подклассы смогут наследовать все свойства суперкласса, за исключением частных свойств суперкласса.

Мы можем гарантировать, что млекопитающее на самом деле является животным с использованием оператора экземпляра.

И результат
true
true
true

Покажем как ключевое слово Implements используется для получения отношения IS-A.

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

Что такое ключевое слово instanceof в Java?

Оператор java instanceof используется для проверки того, является ли объект экземпляром указанного типа (класс, подкласс или интерфейс).

Instanceof также известен как оператор сравнения типов, потому что он сравнивает экземпляр с типом. Возвращает либо true, либо false. Если мы применяем оператор instanceof к любой переменной, которая имеет нулевое значение, она возвращает false.

Если мы применяем оператор instanceof к переменной с нулевым значением, он возвращает false.

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

Результат будет получен:
true
true
true

HAS-A отношения

HAS-A определяет, есть ли у определенного класса определенная вещь. Это соотношение помогает уменьшить дублирование кода и ошибок.

Это показывает, что класс Van имеет Speed(скорость). Имея отдельный класс скорости, нам не нужно помещать весь код, принадлежащий скорости, в класс Van, что позволяет повторно использовать класс скорости в нескольких приложениях.

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

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

Типы наследования

Существуют различные типы наследования на Java, как показано ниже.

Что такое подкласс в java. Смотреть фото Что такое подкласс в java. Смотреть картинку Что такое подкласс в java. Картинка про Что такое подкласс в java. Фото Что такое подкласс в java

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

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

Чтобы никто не мог наследовать класс просто используйте модификатор доступа final перед названием класса. (final class Nameclass <> )

Средняя оценка / 5. Количество голосов:

Или поделись статьей

Видим, что вы не нашли ответ на свой вопрос.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *