Электронная библиотека книг Александра Фролова и Григория Фролова.
 
Библиотека
Братьев
Фроловых
Электронная библиотека книг Александра Фролова и Григория Фролова.
Библиотека системного программиста
Программирование на JAVA
ПК. Шаг за шагом
Другие книги
Восстановление данных
Антивирусная защита
Статьи для
программистов
Пользователю компьютера
[Назад]

Библиотека примеров приложений Java

Оглавление
Базовые типы

Замещающие типы
Без указателей
Массивы
Структурное программи-
рование

Обработка исключений
Возбуждение исключений
Классы обработки исключений
Блок finally
Строки String
Класс Math
Класс Vector
Класс Stack
Словарь на базе Hashtable
Словарь на базе Properties
Цифровые часы
Собственный класс
Наследование классов

Интерфейсы

Назад Вперед

1.18. Наследование классов

Пример демонстрирует механизм наследования, примененный в языке программирования Java. На базе класса MyRect, описанного в примере 1.17. Создание собственных классов, мы создали новый класс, переопределив в нем конструктор и метод, а также добавив новый метод.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Немного теории

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

Конструктор порожденного класса может вызывать конструктор базового класса при помощи оператора super.

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

Для объекта порожденного класса допускается вызов методов базового класса.

Описание примера

В нашем примере мы воспользовались классом MyRect, подробно описанном в разделе 1.17. Создание собственных классов. На базе этого класса, предназначенного для работы с прямоугольниками, мы создали новый класс MyColorRect. Объекты класса MyColorRect являются цветными прямоугольниками.

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

Класс MyColorRect

Класс MyColorRect определен следующим образом:

class MyColorRect extends MyRect
{
  protected Color rectColor;

  MyColorRect(int x1, int y1, 
    int x2, int y2, Color colr)
  {
     . . .
  }
  
  public void setColor(Color colr)
  {
     . . .
  }
  
  public String toString()
  {
     . . .
  }
}

Тот факт, что класс MyColorRect создается на базе класса MyRect, отражается в определении при помощи ключевого слова extends.

Для хранения цвета прямоугольника в классе MyColorRect мы определили защищенное поле rectColor класса Color.

Через первые четыре параметра конструктору класса MyColorRect передаются координаты углов прямоугольника, а через последний - его цвет (как ссылка на объект класса Color):

MyColorRect(int x1, int y1, 
  int x2, int y2, Color colr)
{
  super(x1, y1, x2, y2);
  rectColor = colr;
}

Координаты углов передаются конструктору базового класса MyRect. Он записывает их в поля x1, y1, x2 и y2, определенные в базовом классе.

Метод setColor предназначен для изменения цвета прямоугольника:

public void setColor(Color colr)
{
  rectColor = colr;
}

Новое значение цвета, передаваемое методу через параметр colr, записывается в поле rectColor.

Заметим, что в базовом классе MyRect нет метода именем setColor. Таким образом, это новый метод, расширяющий набор методов базового класса.

Что же касается метода toString, то в его задачу входит отображение как координат углов прямоугольника, так и его цвета:

public String toString()
{
  String sz = "Object MyRect: (" +
    x1 + ", " + y1 + ", " +
    x2 + ", " + y2 + "), " + 
    rectColor.toString();
      
  return sz;
}

Метод toString класса MyColorRect перегружает одноименный метод базового класса MyRect. К концу возвращаемой им строки он дописывает цвет прямоугольника в виде текстовой строки, полученной с помощью метода toString класса Color.

Работа программы ColorRectangle

После запуска программы управление передается методу main класса ColorRectangle.

При этом вначале метод main создает объект класса MyColorRect - прямоугольник черного цвета с координатами углов (0, 0, 10, 20):

MyColorRect rect = new MyColorRect(
  0, 0, 10, 20, Color.black);

Для отображения координат углов и цвета прямоугольника мы получаем строку описания методом toString, определенном в классе MyColorRect:

String szStr = rect.toString();

Эта строка затем выводится на консоль:

System.out.println(szStr);

Далее программа устанавливает новые координаты углов прямоугольника:

rect.setMyRect(10, 20, 30, 40);

Заметьте, что здесь вызывается метод setMyRect, определенный в базовом классе MyRect.

Для установки нового цвета мы вызываем метод setColor из класса MyColorRect:

rect.setColor(Color.red);

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

szStr = rect.toString();
System.out.println(szStr);

Вот что вы там увидите:

Object MyRect: (0, 0, 10, 20), 
  java.awt.Color[r=0,g=0,b=0]
Object MyRect: (10, 20, 30, 40),
  java.awt.Color[r=255,g=0,b=0]

Так как первоначально цвет прямоугольника был черный, значения всех цветовых компонент были равны нулю. После перекрашивания красная компонента получила максимально возможное значение, равное 255. Значения остальных компонент цвета, как и следовало ожидать, не изменились.

Назад Вперед

[Назад]


Создание интернет-магазинов: http://www.shop2you.ru/ © Александр Фролов, Григорий Фролов, 1991-2016