*
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>
答案 0 :(得分:0)
m2
方法未定义为已分配类型Bat
的方法,因此会导致编译时问题;这可以通过铸造来解决;
虽然创建了Cat
的新实例,但它的引用是通过声明为Abc
类型的引用。因此,对a的任何引用都会将新Cat
视为Abc
。