让我重命名您的班级,以使事情更加清楚。
base->
Animal。
Derived->
Cat。
仅仅因为你是一个
Animal人并不意味着你是一个人
Cat。你可能是一个
Dog。这就是将A强制
Animal转换为A的原因
Cat。
另一方面,每个
Cat是
Animal吗?答案是“是”。这就是为什么您 可以 编写如下代码:
Animal animal = new Cat();
要么
Cat cat = new Cat();Animal animal = cat;
另外值得注意的是,您 可以 执行以下操作:
Animal animal = new Cat();Cat cat = (Cat) animal;
这样做的原因是您的
animal变量实际上是在引用
Cat实例。因此,您可以将其强制转换回引用的变量
Cat。



