JAVA上转型、下转型
程序员文章站
2022-03-09 09:36:15
...
Java里面有两种机制。上转型和下转型。
Father类
public class Father {
public void sayHello() {
System.out.println("Father:Hello");
}
public void sayBye() {
System.out.println("Father:Bye");
}
}
Son类
public class Son extends Father {
public void sayHello() {
System.out.println("Son:Hello");
}
//Son类特有的方法
public void sonMethod() {
System.out.println("这是son特有的方法");
}
}
上转型:
父类对象由子类实例化。其中Son继承了Father类。
//上转型
Father father = new Son();
如上:那么father能调用的方法全是Father类的方法,如果子类Son重写了此方法的话,那么则会调用Son中重写的方法。
father.sayHello();
father对象调用sayHello()方法,此方法是Father类中的方法,Son类进行了重写。那么调用的为Son类中的sayHello方法。
father.sayBye();
father对象调用sayBye()方法,此方法是Father类中的方法,Son类未进行重写。那么调用的为Father中的sayBye方法。
既然father是通过子类Son进行实例化的,那么father能否调用Son类中特有的方法sonMethod()呢?答案是不能。
下转型:
下转型并不常用。
Son son = (Son) new Father(); //错误的
子类对象通过父类对象直接实例化,这样是不可以的。会抛出ClassCastEcxeption异常。
那应该怎么下转型呢?
通过已经上转型的父类对象在赋给子类。
//下转型
Father father = new Son();
Son son = (Son) father;
那么此时下转型的son可以调用Son的所有方法。
下一篇: fortran常见错误汇总