父类强制转换成子类调用子类方法是否可以运行
发布网友
发布时间:2022-04-23 13:32
我来回答
共1个回答
热心网友
时间:2023-08-03 00:50
这要看类型声明为父类的变量指向的实际实例与要转换成的目标子类的实例或目标子类的子类实例。
例:
public class 父类 {
public void 父类方法() {
System.out.println("父类方法");
}
}
public class 子类A extends 父类 {
public void 子类A方法() {
System.out.println("子类A方法");
}
}
public class 子类B extends 父类 {
public void 子类B方法() {
System.out.println("子类B方法");
}
}
public class Test {
public static void main(String[] args) {
父类 子A = new 子类A();
父类 子B = new 子类B();
父类 父 = new 父类();
((子类A) 子A).子类A方法(); // 正常执行
((子类B) 子B).子类B方法(); // 正常执行
// ((子类A) 父).子类A方法(); // ClassCastException
// ((子类B) 父).子类B方法(); // ClassCastException
}
}