gpt4 book ai didi

java - 为什么编译器允许我将一个实现类转换为另一个实现类?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:59:37 25 4
gpt4 key购买 nike

<分区>

所以我一直在研究向下转换,试图找出哪些有效,哪些无效。我有三个类:一个基类 Animal 和两个派生类 DogCat:

private class Animal {
}

private class Dog extends Animal {
}

private class Cat extends Animal {
}

由于显而易见的原因,编译器不允许使用以下代码:

Dog dog = s.new Dog();
Cat cat = (Cat) dog;

这是因为我将一个派生类转换为另一个派生类,这是不可能的。但是,如果我将 Animal 设为接口(interface)类型并将 Cat 设为接口(interface)类型,那么编译器会突然接受它并且不会说任何问题,即使这是不可能的.

private interface Animal {

}

private class Dog implements Animal {

}

private interface Cat extends Animal {

}

一旦我运行与以前相同的代码,它就会如预期的那样给我一个错误。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com