SZMURLO MAURICE wrote:
>1. Worker.new(...).work    #-> OK
>2. Secretary.new(...).work #-> Error: abstract mathod "work" not implemented
>3. Employee.new(...)       #-> Error: cannot instatiate abstract class
>
>I know that "work" could be implemented in Employee with an exception
>thrown.
>This would solve case 2, but still an Employee could be instantiated (3.),
>which
>conceptually is not a good thing.

The private_class_method method (in Module) can 
be used to disable new for the base class. I had 
this working well in one of my classes, but have 
since reorganized my hierarchy so I removed it.

You would say something like:

class Worker
  private_class_method :new
  ...
end

This would prevent anyone from calling 
Worker.new.

Kevin