Иллюстрированный самоучитель по Java



              

Иерархия - часть 2


Dog

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

Pet

так, как будто они описаны в классе

Dog

:

Dog tuzik = new Dog(), sharik = new Dog();

После этого определения можно будет написать

tuzik.age = 3;

int p = sharik.eat (30, 10, 12);

А классификацию продолжить так:

class Pointer extends Dog{ ... } // Свойства породы Пойнтер 

class Setter extends Dog{ ... }  // Свойства сеттеров

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

extends

— "расширяет" и говорят, что класс

Dog

расширение

(extension) класса

Pet

. С другой стороны, количество объектов при этом уменьшается: собак меньше, чем всех домашних животных. Поэтому часто говорят, что класс

Dog

подкласс

(subclass) класса

Pet

, а класс

Pet

суперкласс

(superclass) или надкласс класса

Dog

.

Часто используют генеалогическую терминологию: родительский класс, дочерний класс, класс-потомок, класс-предок, возникают племянники и внуки, вся беспокойная семейка вступает в отношения, достойные мексиканского сериала.

В этой терминологии говорят о

наследовании

(inheritance) классов, в нашем примере класс

Dog

наследует класс

Pet

.

Мы еще не определили счастливого владельца нашего домашнего зоопарка. Опишем его в классе Master. Делаем набросок:

class Master{ // Хозяин животного

String name;  // Фамилия, имя

              // Другие сведения

void getFood(int food, int drink); // Кормление

              // Прочее 

}

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




Содержание  Назад  Вперед