I just noticed that java.util.Observable is a concrete class. Since the purpose of Observable is to be extended, this seems rather odd to me. Is there a reason why it was implemented this way?

I found [this article](http://javanook.tripod.com/patterns/observer.html) which says that 

> 
> The observable is a concrete class, so the class deriving from it must be determined upfront, as Java allows only single inheritance.
> 
> 
> 

But that doesn't really explain it to me. In fact, if Observable were abstract, the user would be forced to determine the class deriving from it.