Java中的向上转型和向下转型
Cycle是基类,Bicycle和Unicycle是导出类。
向上转型也就是导出类转型为基类,不再拥有自有的方法,但是保留了基类有的方法,而且在调用方法时实际上是调用了覆盖之后的方法。有一个好处就是在实现很多不同导出类的时候,可以形成统一的形式,缺点就是导出类失去了自身特有的方法。
向下转型就是基类强行转化成导出类。一个应用就是当我们出于某种原因,将很多导出类统一向上转型,但是在实现之后,又需要调用特有的方法,因此采用向下转型。
public class E17 {
public static void main(String[]args) {
Cycle cycle = new Cycle();
cycle.ride();
Cycle bicycle = new Bicycle();//向上转型
Bicycle bicycle2 = (Bicycle)bicycle;//向下转型
bicycle.ride();
//! bicycle.move() 报错,Cycle()中没有这个方法
bicycle2.move();
}
}
class Cycle{
void ride() {
System.out.println("Cycle");
}
}
class Unicycle extends Cycle{
void ride() {
System.out.println("Unicycle");
}
}
class Bicycle extends Cycle{
void ride() {
System.out.println("Bicycle");
}
void move() {
System.out.println("Bicycle move");
}
}
参考向下转型的意义