正是因为aChild是aParent功能的超集。你可以写:
class Fox : Animal
因为每只狐狸都是动物。但是另一种方法并不总是正确的(并非每个动物都是狐狸)。
同样,您似乎混合了OOP。这不是父子关系,因为不涉及构图/树。这是祖先/后代继承关系。
继承是“类型的”而不是“包含”的。因此,它是 狐狸,是动物的一种 ,在您的情况下,听起来不对-“孩子是父母的一种”?类的命名是造成混乱的根源;)。
class Animal {}class Fox : Animal {}class Fish : Animal {}Animal a = new Fox(); // ok!Animal b = new Fish(); // ok!Fox f = b; // obviously no!


