¿Por qué los lenguajes de POO estáticos fuertes convencionales evitan heredar primitivas?

¿Por qué está bien y es más esperado? abstract type Shape { abstract number Area(); } concrete type Triangle : Shape { concrete number Area() { //... } } ... mientras esto no está bien y nadie se queja: concrete type Name : string { } concrete type Index : int { } concrete type Quantity...