Почему основные сильные статические ООП-языки препятствуют наследованию примитивов?

Почему это нормально и в основном ожидается: abstract type Shape { abstract number Area(); } concrete type Triangle : Shape { concrete number Area() { //... } } ... пока это не нормально и никто не жалуется concrete type Name : string { } concrete type Index : int { } concrete type Quantity : int {...