Pourquoi les langages POO statiques forts traditionnels empêchent-ils d'hériter des primitives?

Pourquoi est-ce correct et surtout attendu: abstract type Shape { abstract number Area(); } concrete type Triangle : Shape { concrete number Area() { //... } } ... alors que ce n'est pas correct et que personne ne se plaint: concrete type Name : string { } concrete type Index : int { } concrete...