对继承的对象进行多次转换

时间:2013-08-25 15:38:43

标签: java

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

2 个答案:

答案 0 :(得分:3)

a首先被投射到I类型,然后输入B,因为投射是右关联的。

答案 1 :(得分:0)

你为什么要把它放在首位?这是多级继承,但这里发生的是它们在类I中的所有方法都被类A继承,因为类B继承了类A,类A中的方法被传递到类B.这意味着类A继承的所有方法也将在B班

这意味着B级也是I类的一种类型,因此我认为根本不需要施放