0
interface I{
}
class A implements I{
}

class B extends A {
}

class C extends B{

    public static void main(String args[])
    {
        A a = new A();
        B b = new B();

        b = (B)(I)a; //Line 1
    }
}

我知道这不是实际代码:)

我只需要知道如何在 1 号线进行铸造。

我知道引用变量“a”被强制转换为 B 类/接口 I。

但我不确定演员表发生的顺序……有人可以告诉我哪个演员表首先执行。

PS:我搜索了类似的帖子,但其中大多数来自 C++。如果类似的帖子已经存在于 Java 中,请指出它..tx

4

2 回答 2

3

a首先转换为type ,I然后转换为 type B,因为转换是右关联的。

于 2013-08-25T15:41:49.137 回答
0

当初为什么要投呢?这是多级继承,但这里发生的是类 A 继承的类中的所有方法,因为类 B 继承类 A 类 A 中的方法传递给类 B。这意味着类 A 继承的所有方法也将属于 B 类

这意味着 B 类也是 I 类的一种,因此我相信根本不需要强制转换

于 2013-08-25T16:10:19.893 回答