В рамках парадигмы КОП (Компонентно Ориентированное Программирование), запрещено (или очень порицается) межмодульное наследование. Межмодульно разрешается наследоваться только от абстрактных типов. Так вот, можно это требование еще более ужесточить. Этот исходный абстрактный тип не должен быть типом-значением, а должен быть (ссылочным/указательным)-типом. А объясняется это очень просто. Дело в том, что тип-значение имеет такой "скрытый" параметр как размер переменной (ведь переменные этого типа размещаются на стеке, а значит зависимым модулям надо знать размер переменной). Если вдруг, потом в исходном модуле внести изменение изменяющее размер переменных этого типа (добавить или удалить скрытое/приватное/неэкспортируемое поле), то все зависимые модули придется ПЕРЕКОМПИЛИРОВАТЬ даже не смотря на то, что в открытом/публичном интерфейсе этого типа изменений не было.
В общем, то это очевидно. Но пока сам на это не нарвешься — до конца не осознаешь.