它给您一个错误,因为
a它不是- 的实例
C-因此您不可以对其进行下垂。试想一下,如果这 是 允许的-你可以这样做:
Object o = new Object();FileInputStream fis = (FileInputStream) o;
当您尝试从流中读取内容时,您期望发生什么?您希望从哪个文件读取?
现在第二部分:
A a=new A();C c=new C();C c=(C)a;
那将 无法 正常工作-首先,即使您
c两次声明相同的变量(),它也无法编译。如果你修复错误,你会 仍然 在尝试投的实例得到一个异常
A来
C。
但是,此代码是真正有效的:
A a = new C(); // Actually creates an instance of CC c = (C) a; // Checks that a refers to an instance of C - it does, so it's fine
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)