【发布时间】:2018-06-21 11:29:54
【问题描述】:
我读到派生类型与它们各自的父类型完全不同,但是它们确实继承了它们所有父类型的操作。
换句话说,您可以将派生类型A 传递给一个操作,该操作接收B 类型作为参数,它是A 的父类型。但是,您不能将 A 类型的变量分配给 B 类型之一,反之亦然。
根据上述,派生类型和子类型之间的唯一区别是赋值。对吗?
【问题讨论】:
标签: ada derived-types subtyping
我读到派生类型与它们各自的父类型完全不同,但是它们确实继承了它们所有父类型的操作。
换句话说,您可以将派生类型A 传递给一个操作,该操作接收B 类型作为参数,它是A 的父类型。但是,您不能将 A 类型的变量分配给 B 类型之一,反之亦然。
根据上述,派生类型和子类型之间的唯一区别是赋值。对吗?
【问题讨论】:
标签: ada derived-types subtyping
派生类型仅继承其派生类型的原始操作。
从技术上讲,类型派生会创建一组新的原始操作,因此您不能“将派生类型 A 传递给以 B 为参数的操作,该类型是 A 的父级” .但是编译器会创建具有相同名称和实现的操作,这些操作从B 类型的原始操作中对A 类型起作用。例如,您可以通过显式声明抽象来删除继承的操作。
【讨论】: