private final String name;
private Object value = null;
public Attr (String name)
publiс Attr (String name, Objeсt value)
public String getName ()
public Object getValue ()
public Object setValue (Object newValue)
Object oldVal = Value;
public String toString ()
return name + "= '" + value "'";
Наступний клас, який ми розглянемо, розширює (extends) поняття атрибуту, дозволяючи доповнити його інформацією про колір. Опис кольору задається або ім'ям, таким як "червоний" або "сірувато-бежевий", яке має Існувати в деякій таблиці, або числом, що допускає можливість перетворення з метою отримання стандартної, більш ефективної форми Уявлення кольору, названої нами (мається на увазі, що відповідний клас визначений раніше). Операція перетворення опису кольору в об'єкт типу трудомістка, тому нам хотілося б виконувати її тільки один раз. Ми розширюємо клас Attr і створюємо на його основі.
class ColorAttr extends Attr
private Screencolor myColor; // Декодований колір
public ColorAttr (String super (name, value)
public ColorAttr (String name)
public ColorAttr (String name, ScreenColor value)
public Object setVal (Object newValue)
// спочатку викликаємо setvalue базового класу
Object retval = super.setvalue (newValue);
/ ** присвоювання в myColor об'єкта * screenColor, а не опису * /
public screenColor setvalue (screencolor newValue)
// Спочатку викликаємо setvalue базового класу
ScreenColor oldValue = myColor;
/ ** отримання об'єкта screenColor * з декодувати кольором * /
public screenColor getColor ()
/ ** присвоювання в myColor значення,
* Отриманого з опису в value * /
protected void decodeColor ()
if (getValue () == null)
myColor = new screenColor (getValue ());
Новий клас ColorAttr успадковує (розширює) клас Attr - він здатний виконувати всі функції класу Attr і наділений новими. Таким чином, Attr це базовий клас, а СоlorАttr - похідний. Ієрархію класів - в напрямку від похідних до базового - в даному випадку можна зобразити таким чином Color -> Attr -> Object.
Розширений клас ColorAttr виконує наступне:
· Пропонує три версії конструкторів - два з них "дзеркально" відображають функції конструкторів базового класу, а третій безпосередньо взаємодіє з об'єктом screenColor;
· Одноразово переопределяет і перевантажує метод setValue базового класу таким чином, щоб забезпечити можливість завдання нової колірної складової атрибута;
· Містить новий метод getColor, який повертає значення, яке представляє собою опис кольору, перетворене в об'єкт ScreenColor.
У наступних розділах ми постараємося розповісти про тонкощі успадкування і про ТОМ вплив, якому в ході цього процесу піддаються різні члени класу.