- 向上转型:父类对象 = 子类对象,自动进行
- 向下转型: 子类对象 = (子类)父类对象, 必须强制转换
- 向上转型后,调用的方法一定是被子类覆写过后的方法,但是一定注意,只在子类定义的方法是无法调用的,如需调用,则必须向下转型;
- 向下转型前必须首先发生相应的对象向上转型,就好比父子先相认,确定父子关系才能实现“父认子”
package com.lee.mxdx;
class Father{
public void fun1() {
System.out.println("Father-->fun1()");
}
public void fun2() {
System.out.println("Father-->fun2()");
}
}
class Child extends Father{
public void fun1() {
System.out.println("Child-->fun1()");
}
public void fun3() {
System.out.println("Child-->fun3()");
}
}
public class DuoT {
public static void main(String[] args) {
Child child = new Child();
Father father = child; //子类对象向父类转换,向上转型自动完成
father.fun1(); // 调用的是被子类覆写过的方法
father.fun2(); // //可调用父类的方法(子类继承)
//father.fun3(); //此处不能调用只在子类定义的方法,如需调用,必须向下转型。
Child child2 = (Child)father; //向下转型必须指明子类的类型,并且一定先发生向上转型,确定了父子关系
child2.fun3();
}
}
输出结果:Child-->fun1() Father-->fun2() Child-->fun3()