Java - 你能把一个对象转换成一个它没有扩展的类吗?

时间:2010-12-16 10:07:32

标签: java inheritance casting

另一种提出同一问题的方法是,给定2个A类和B类,它是同义词:“对象A可以被投入B”和“对象A是B的后代”吗?

谢谢,

JDelage

编辑澄清问题,使A和B都是类更清楚。

5 个答案:

答案 0 :(得分:2)

不,你不能。它抛出ClassCastException。

答案 1 :(得分:2)

Java - 你能把一个对象转换成一个它没有扩展的类吗?” - 不,你不能。

基本上,它是同义词:”对象A可以转换为B“和”对象A是B的直接后代“吗?” - 是的。此外,当A是实现接口B的类时。

答案 2 :(得分:2)

如果不是直接后代或者没有实现接口

class A;
class B extends A;
A a = new B(); 

interface A;
class B implements A;
(A) B

在其他情况下

它会抛出ClassCastException http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ClassCastException.html

答案 3 :(得分:1)

是的,你可以,如果B是接口而A是B的实现

答案 4 :(得分:0)

假设你有:

interface I {}
class A implements I {}
class B extends A {}
class C extends B {}

以下所有内容均有效:

(I)C;
(A)C;
(B)C;