If you consult the
JLS
It is a compile-time error to declare an abstract class type such that it is not possible to create a subclass that implements ALL of its abstract methods
In your code, there is no possible way to create a concrete implementation of defmethod()...