先来看看定义:
向上转型(upcasting):子类引用的对象转换为父类类型称为向上转型。
Father f= new Father();
son s=new son();
f=s; //Father f= new Son();
有以下特点:
1、只能调用父类的成员(除private成员),如果子类重写了父类的方法就根据这个引用指向调用子类重写的这个方法(这个方法就是覆盖override)。这个调用过程就称为“动态绑定”。
2、实际上是子类的内存空间
向下转型(downcasting):父类引用的对象强制转换为子类类型称为向下转型。
Father f= new Son();
son s=(son)f;
//Father f= (son)new Father();
子类引用不能指向父类对象,但此时f为父类指向子类的对象,故可以。否则出现异常,可以通过instanceof来防止出现异常。
1、只能调用子类的成员(除private成员)
2、实际上是父类的内存空间
那么向上转型的意义呢?