7.3 Abstract classes
We intend that the <position> class will not have direct instances. Any position objects should be direct instances of <absolute-position> and <relative-position>. In Dylan, a class that is intended to be a superclass and not to have direct instances is an abstract class. A class that is intended to have direct instances is a concrete class.
By default, a user-defined class is concrete. To define an abstract class, you declare it to be abstract in the define class form. For example:
// Superclass of all position classes define abstract class <position> (<object>) end class <position>;
The <time> class is another one that we intend to have no direct instances, so we redefine it to be abstract:
define abstract class <time> (<object>) slot total-seconds :: <integer>, init-keyword: total-seconds:; end class <time>;
If we tried to make an instance of <position> or <time> now, make would signal an error. For more information about abstract classes, see Section 7.7.




