Java за неделю. Вводный курс. Валерий Станиславович Яценков

Чтение книги онлайн.

Читать онлайн книгу Java за неделю. Вводный курс - Валерий Станиславович Яценков страница 29

Java за неделю. Вводный курс - Валерий Станиславович Яценков

Скачать книгу

number+a;

      }

      }

      public class Listing7_1 {

      public static void main (String [] args) {

      // создаем объект суперкласса

      MyParentClass objParent=new MyParentClass ();

      // создаем объект подкласса

      MyChildClass objChild=new MyChildClass ();

      // вызываем методы суперкласса

      objParent.showNumber ();

      objParent.showText ();

      // вызываем методы подкласса

      objChild.showNumber ();

      objChild.showText ();

      // вызываем дополнительный метод подкласса

      int b=objChild.sum (12);

      // выводим результат вызова метода на печать

      System.out.println (b);

      }

      }

      В данном примере мы описали класс MyParentClass, в котором определены два поля – целочисленное и текстовое, а также два метода для вывода этих полей на печать.

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

      Для внесения изменений и дополнений мы воспользуемся механизмом наследования. Создадим подкласс MyChildClass, в котором опишем дополнительный метод sum (). Подкласс полностью наследует открытые поля и методы суперкласса, поэтому метод sum () свободно обращается к полю number. Это поле объявлено и существует, хотя и не упомянуто в явном виде при описании подкласса.

      Далее, в главном методе программы мы создаем объект суперкласса objParent и объект подкласса objChild. Еще раз подчеркну, что это абсолютно равноправные и независимые объекты. Разница лишь в том, что объект objChild располагает методом sum (), которого нет у объекта objParent.

      Убедимся в том, что свойства объектов именно такие, как ожидалось. Сначала выведем на печать содержимое полей объекта objParent:

      objParent.showNumber ();

      objParent.showText ();

      Затем выведем на печать содержимое полей объекта objChild:

      objChild.showNumber ();

      objChild.showText ();

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

      5

      Hello

      5

      Hello

      Теперь для объекта objChild вызовем метод sum () и выведем результат работы метода на печать. Как видите, подкласс MyChildClass успешно расширил суперкласс MyParentClass при помощи нового метода. Благодаря наследованию мы можем произвольно редактировать дополнительные поля и методы, не затрагивая исходный суперкласс.

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

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

Скачать книгу