1、父类引用可以指向子类对象,子类引用不能指向父类对象。
2、把子类对象直接赋给父类引用叫upcasting向上转型,向上转型不用强制转型。
如Father father = new Son();
3、把指向子类对象的父类引用赋给子类引用叫向下转型(downcasting),要强制转型。
如father就是一个指向子类对象的父类引用,把father赋给子类引用son 即Son son =(Son)father;
其中father前面的(Son)必须添加,进行强制转换。
4、upcasting 会丢失子类特有的方法,但是子类overriding 父类的方法,子类方法有效
5、向上转型的作用,减少重复代码,父类为参数,调有时用子类作为参数,就是利用了向上转型。这样使代码变得简洁。体现了JAVA的抽象编程思想。
向上转型的好处:
也就是多态的好处,应用场景一般有两种:
一个是父类对象作为返回值类型,一个是父类对象作为形参;
public void test(Person person){
person.work();
}
如果传入的是student对象,那么执行的work方法就是student类中的work方法,如果是teacher就是teacher的work方法,
当你不确定会执行哪个的时候,就可以这么写,不然就要写两个方法,一个方法参数是student一个方法参数是teacher