Znav |
---|
next | Class Inheritance Limitations |
---|
prev | Architectural Implications of Classes |
---|
|
A Slice class can also be used as a servant in a server, that is, an instance of a class can be used to provide the behavior for an interface, for example:
Wiki Markup |
---|
{zcode:slice}
interface Time {
idempotent TimeOfDay getTime();
idempotent void setTime(TimeOfDay time);
};
class Clock implements Time {
TimeOfDay time;
};
{zcode} |
The implements
keyword indicates that the class Clock
provides an implementation of the Time
interface. The class can provide data members and operations of its own; in the preceding example, the Clock
class stores the current time that is accessed via the Time
interface. A class can implement several interfaces, for example:
Wiki Markup |
---|
{zcode:slice}
interface Time {
idempotent TimeOfDay getTime();
idempotent void setTime(TimeOfDay time);
};
interface Radio {
idempotent void setFrequency(long hertz);
idempotent void setVolume(long dB);
};
class RadioClock implements Time, Radio {
TimeOfDay time;
long hertz;
};
{zcode} |
The class RadioClock
implements both Time
and Radio
interfaces.
A class, in addition to implementing an interface, can also extend another class:
Wiki Markup |
---|
{zcode:slice}
interface Time {
idempotent TimeOfDay getTime();
idempotent void setTime(TimeOfDay time);
};
class Clock implements Time {
TimeOfDay time;
};
interface AlarmClock extends Time {
idempotent TimeOfDay getAlarmTime();
idempotent void setAlarmTime(TimeOfDay alarmTime);
};
interface Radio {
idempotent void setFrequency(long hertz);
idempotent void setVolume(long dB);
};
class RadioAlarmClock extends Clock
implements AlarmClock, Radio {
TimeOfDay alarmTime;
long hertz;
};
{zcode} |
These definitions result in the following inheritance graph:
A Class using implementation and interface inheritance.
For this definition, Radio
and AlarmClock
are abstract interfaces, and Clock
and RadioAlarmClock
are concrete classes. As for Java, a class can implement multiple interfaces, but can extend at most one class.
See Also
Znav |
---|
next | Class Inheritance Limitations |
---|
prev | Architectural Implications of Classes |
---|
|