Наследование в Java: классы

"Наследование." Многие из тех, кто читает это, когда-то сидели в своем классе и слушали первую лекцию по Java своего профессора, который приводит тот же общепринятый пример, что и многие люди: «Вы унаследовали от своих родителей несколько вещей…» и потом каким-то образом связывает это с java при рисовании генеалогического древа на доске. Хотя в некоторой степени это справедливо и для Java, в коде это работает гораздо шире.

Давайте начнем с того, что такое наследование:
Это один из столпов парадигмы объектно-ориентированного программирования, который позволяет вам использовать методы и свойства одного класса в другом, тем самым уменьшая количество повторных операций. записываемый код путем установления отношения родитель-потомок между классами.

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

Теперь давайте напишем еще один класс, который наследует этот класс. Мы используем ключевое слово extends после имени класса, за которым следует имя класса, который вы хотите наследовать.

Вышеупомянутый класс, Addition, наследует Arithmetic, а это означает, что теперь в нем также доступны функции addNumbers иmultiNumbers. Напишем основной класс, а метод add будем использовать так, как если бы они были в самом Addition.

Обратите внимание, что в приведенном выше классе Application мы создали ссылку на объект класса Addition и использовали ее для вызова метода addNumbers()метод, который на самом деле присутствовал в классе Арифметика. И наследование играет роль, у вас будет рабочий код!

Мы можем заметить, что с помощью наследования один класс может использовать функциональность, определенную другим классом, если она видна другим классам. Если вы знакомы с инкапсуляцией классов с использованием предохранителей доступа: public, private, и protected , то вы, возможно, знаете, что объявление метода private не позволит ему быть видимым за пределами охват класса. если бы вышеприведенный класс Arithmetic имел метод addNumbers(), объявленный private, он вернул бы ошибку в основном классе, где вы пытались вызвать addNumbers при добавлении, поскольку частный метод ограничивает себя тем классом, в котором он был определен.

Что, если вы захотите использовать собственный метод в классе Addition, возможно, для того, чтобы иметь в методе другую функциональность? Вы еще, конечно, можете. И когда вы это делаете, технически это называется переопределением метода. Если вы знакомы с полиморфизмом, вы знаете, что такое перегрузка. Там одноименные методы присутствуют в одном классе; override включает в себя классы родитель-потомок, каждый из которых имеет методы с одинаковым именем.

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