为什么在继承中需要强制转换

时间:2014-12-01 06:51:10

标签: java oop object inheritance casting

*

class Abc {
    void m1() {
    }
}
class Bat extends Abc {
    void m2() {
    }
}
class Cat extends Bat {
    void m3() {
    }
}
class D extends Cat {
    void m4() {
    }
}
public class Check {
    public static void main(String[] args) {
        Abc a = new Bat();
        a.m1();
        ((Bat) a).m2();
    }
}

为什么我们将创建的对象转换为Bat,以便在该方法属于m2()类时访问Bat并且我们已创建其object?< / p>

1 个答案:

答案 0 :(得分:0)

m2方法未定义为已分配类型Bat的方法,因此会导致编译时问题;这可以通过铸造来解决;

虽然创建了Cat的新实例,但它的引用是通过声明为Abc类型的引用。因此,对a的任何引用都会将新Cat视为Abc