As Weedpacket suggested, it will work.
You should never have any instances of "first" though, only "other" and other subclasses of first.
This is a fairly common thing in object-oriented programming. "first" is what we call an "abstract class". It defines common fields and methods for its subclasses, but depends on subclasses to complete the implementation. A subclass of an abstract class is said to be "concrete" (unless it too is abstract).