Dlaczego mainstreamowe silne statyczne języki OOP zapobiegają dziedziczeniu prymitywów?

Dlaczego jest to w porządku i najczęściej oczekiwane: abstract type Shape { abstract number Area(); } concrete type Triangle : Shape { concrete number Area() { //... } } ... podczas gdy to nie jest OK i nikt nie narzeka: concrete type Name : string { } concrete type Index :...