The parent has the abstract property Parent.Name. Because of the abstract word, you promise that the parent instances (subclasses) will implement the Name property. if they do not, you cannot create its object.
Please note that I say: instances cannot be created. If a subclass does not implement the Name property, the class may exist, but you cannot create it.
The Parent class does not implement the property name, so you cannot create an instance of Parent.
The Child class, however, implements Name, so you can create it, and because you promised that every object (= instance) of the Parent class has a property name, you can be sure that although all you know is its parent , you also know that he has a name.
This is the basic principle of polymorphism in subtyping Wikipedia on polymorphism
This may be the main reason you want to subclass.
source share