Объектно-ориентированное программирование на Java. Платформа Java SE. Тимур Машнин
Чтение книги онлайн.

Читать онлайн книгу Объектно-ориентированное программирование на Java. Платформа Java SE - Тимур Машнин страница 31

СКАЧАТЬ и exit- это методы, которые изменяют это число пассажиров.

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

      Имейте в виду, что не стоит называть переменную и метод одним и тем же именем.

      Затем оба класса используют переменную цвет, а также методы для движения вперед

      и назад.

      Что мы можем сделать для упрощения кода, так это сначала определить универсальный класс для транспортных средств.

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

      Затем мы можем определить классы, car и truck, которые наследуют поля и методы от этого общего для них класса.

      Vehicle будет называться суперклассом классов car и truck, и классы car и truck являются подклассами класса Vehicle.

      Теперь мы можем определить класс car, расширив класс Vehicle, и добавить дополнительные поля и методы, которые может иметь легковой автомобиль.

      А для грузовых автомобилей мы делаем то же самое: расширяем класс Vehicle такими полями и методами, которые необходимы.

      Все остальные поля и методы унаследованы от класса Vehicle.

      Обратите внимание, что мы не раскрыли тело конструктора.

      Это требует дальнейшего объяснения и новых концепций.

      Но вы должны знать, что класс может иметь несколько подклассов, тогда как класс не может быть подклассом более чем одного класса.

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

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

      Например, если класс B расширяет класс A, это означает, что он наследует его поля и методы.

      И это можно сделать многократно.

      То есть класс B может быть расширен, например, классом C.

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

      В нашем определении класса vehicle и класса car, где класс car расширяет класс vehicle, мы определяем конструктор для класса vehicle, который инициализирует приватное поле color.

      И с этим не никаких проблем.

      Но как мы можем определить тело конструктора car, с учетом двух аргументов, целого числа для количества пассажиров и строки для цвета?

      Класс car наследует все методы от класса vehicle – перемещение вперед и назад, и все его поля, в данном случае, только color.

      Но поле color является приватным полем и не может быть доступно извне класса vehicle.

      Это относится также и к подклассам, и это очень важно.

      Поэтому неправильно присваивать значение «с» полю color в классе car.

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

      Мы можем использовать только публичный метод, например, СКАЧАТЬ