Урок 12. Иерархия. Наследование.

.

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



Стадия 1

        Разберем пример. Сейчас мы создадим программу которая рассчитывает время прибытия автомобиля, обрабатывая такие данные, как скорость автомобиля и расстояние которое ему нужно преодолеть. Опишем супер-класс Car. В нем мы создадим метод который рассчитывает время преодоления расстояния автомобилем. Данный метод в качестве входящих параметров будет принимать значения скорости (speed) с которой будет двигаться автомобиль и расстояния (km) которое ему предстоит преодолеть. Тут простая арифметика, время рассчитывается: расстояние/время и возвращаем рассчитанные минуты,  о чем и говорит нам  оператор return ;

     Далее, мы создаем класс BMW, описывающий марку автомобиля  БМВ, и наследуем от класса Car  все его свойства, для этого указываем оператор extends (расширяет) , и указываем класс который данный класс расширяет, то есть class BMW extends Car — означает что класс BMW расширяет класс Car, при этом он наследует все свойства класса Car, мы можем дальше продолжить наследование, с каждым новым уровнем иерархии в класс будут добавляется новые свойства, например мы можем  создать классы описывающие определенные модели марки машины BMW, при этом не одно свойство класса Car не потеряется. Обратите внимание, что в данном случае, касс BMW будет являться подклассом  (subclass) касса Car или по другому: дочерний класс, класс — потомок, а класс Car будет супер-классом (superclass) или по другому: над-классом, класс — предок, родительский класс.

Класс BMW, содержит две переменные: mileaage — для хранения пробега автомобиля и maxSpeed — для хранения максимальной скорости который может набрать данный автомобиль. Так как он унаследован от супер-класса Car,  будет содержать в себе метод go(double speed, double km), так как  данный метод достался этому классу по наследству.

     Сейчас мы будем использовать объекты созданных классов для расчета времени. Код классов содержит комментарии, так что разобраться будет не сложно. В классе MyActivity мы создаем объект класса BMW, записываем в объект скорость и расстояние которое нужно преодолеть, он рассчитывает время, с помощью метода go, который он наследует от своего родительского класса Car. Проверяем не превышает ли заданная скорость возможности автомобиля, если превышает то выводим соответствующее сообщение. Далее мы получаем расчетное время в минутах, разложим его на часы и минуты,  и передаем все это в конструктор строк , в textView передаем конструктор, а сам  textView передаем  методу setContentView который передает все это на экран.

Запускаем и смотрим что у нас получится.

урок 120 Урок 12. Иерархия. Наследование.

    А теперь изменим скорость с которой будет ехать автомобиль и посмотрим что у нас получится:

    Запускаем…

1201 Урок 12. Иерархия. Наследование.

    Ниже можно скачать проект программы либо собранный в apk файл программы и установить ее на ваш девайс.