在java中明确提供upcasting

时间:2014-07-11 22:45:19

标签: java

class P {
    void a() {
        System.out.println("a");
    }
    void b() {
        System.out.println("b");
    }
}

class C extends P {
    void c() {
        System.out.println("c");
    }
}

class run {
    public static void main(String[] args) {
        C c = new C();
        P p =(C) c; // or  P p =(P) c; 
        p.a();
    }
}

在上面的代码中,我试图提供明确的演员,但我不知道哪一个是正确的。

要么:

P p = (C) c;

或者这个:

P p = (P) c;

编译并运行正常。

1 个答案:

答案 0 :(得分:4)

P p = c;

根本不要施放。 CP;不需要显式转换。没有强制转换,您可以清楚地知道此操作不会失败;通过演员表,您强制读者考虑并放弃c不是P实例的可能性。