在java中,子类是不能直接转成父类的。如果直接强转就会出现ClassCastException。
public class ChongXie extends A{
public static void hello(){
System.out.println("chongxie");
}
public static void main(String[] args) {
A a=new A();
ChongXie b=null;
b= (ChongXie) a;
b.hello();
}
}
class A{
public static void hello(){
System.out.println("hello");//抛出ClassCastException异常
}
}
如果想要强转,可以在强转之前判断一下对象的类型。
public class ChongXie extends A{
public static void hello(){
System.out.println("chongxie");
}
public static void main(String[] args) {
A a=new A();
ChongXie b=null;
if(a instanceof ChongXie)//判断类型是否和目标类型有关系
b= (ChongXie) a;
b.hello();
}
}
class A{
public static void hello(){
System.out.println("hello");//正常运行,输出chongxie
}
}
总结:
想要子类对象强转父类,需要先判断对象的类型是否属于子类。
类方法不能被重写,调用的时候会根据引用类型去调用方法。(因为类方法在类加载阶段就已经加载)