转载:总结的不错
class A {
}
class B extends A {
}
A a = new A();
B b = new B();
A a1 = b;// 向上造型
if(a1 instanceof B){ //判断是否可以转换
B b1 = (B) a1; // 向下造型
}
B b2 = a; // ClassCastException,a的类型是A,实例化也是A
向上造型:父类引用指向子类对象(子类型,实例也是子类的实例化);
向下造型:子类引用指向父类对象(父类型,实例是子类的实例化);