public class Test{ //父类
}
public class TestExtend extends Test{ //子类
}
子类对象可以声明为父类类型,父类对象不可以声明为子类类型
Test a=new TestExtend(); //正确
TestExtend b=new Test(); //错误
在子类对象声明为父类类型后,可以通过强制转型,转型回来
Test a=new TestExtend();
TestExtend a=(TestExtend) b; //正确
而父类对象声明为父类类型之后,并不能执行强制类型转化
Test a=new Test();
TestExtend a=(TestExtend) a; //错误
因为在子类对象声明为父类类型后,其实对象的真实意义还是子类对象
Test a=new Test();
Test b=new TestExtend();
System.out.println(a instanceof TestExtend) ; //输出false
System.out.println(b instanceof TestExtend); //输出为true