分配是 Ada 中派生类型和子类型之间的唯一区别吗?



我读到派生类型与它们各自的父类型完全不同,但是它们继承了它们所有父级的操作。

换句话说,可以将派生类型A传递给操作,该操作接收作为参数的A父级的类型B。但是,不能将类型A的变量分配给类型B的变量,反之亦然。

根据上述内容,派生类型和子类型之间的唯一区别是赋值。是吗?

派生类型仅继承派生它们的类型的基元操作

从技术上讲,类型派生创建了一组新的基元操作,因此您不能"将派生类型A传递给作为参数接收A父级的类型B的操作"。 但是编译器会创建相同名称和实现的操作,这些操作从类型B的基元操作处理类型A。 例如,您可以通过显式声明继承的操作抽象来删除继承的操作。

最新更新