多态:多态是指一种事物表现得多种形态。多态分为静态多态和动态多态
多态的特点:
1.当父类类型的引用指向子类类型的对象时,父类类型的引用可以直接调用父类独有的方法
Fu fu=new Zi();
int f=fu.fushow();
System.out.println("父类类型引用指向子类类型对象时可以直接调用父类类型独有的方法!")
2.当父类类型的引用指向子类类型的对象时,父类类型的引用不可以直接调用子类独有的方法。
Fu fu=new Zi();
fu.zishow();//错误写法!error Fu类中找不到zishow方法,也就是还在Fu类中查找
System.out.printin("父类类型的引用不可以直接调用子类独有的方法。")
3.对于子类类型都有非静态方法来说,编译阶段调用弗雷版本,运行阶段调用子类类型重写版本(动态绑定)编译看左边运行看右边
4.对于父子类都有的静态方法来说,编译和运行阶段都调用父类版本。
引用数据类型之间转换的方式
引用数据类型之间的转换方式有两种: 自动类型转换 和 强制类型转换 。
自动类型转换 :主要指小类型向大类型转换,也就是子类转为父类,也叫向上转型
强制类型转换 :主要指大类型向小类型转换,也就是父类转换为子类,也叫作向下转型或显示类型转换。
引用类型转换的注意事项:引用数据类型之间转换必须发生在父子类之间,否则编译报错。
若强转类型的并不是改引用类型的正确指向的数据类型时则编译通过,运行阶段发僧类型转换异常。
使用父类类型的引用调用子类独有方法的方
((Zi)fu).zishow();//强转
System.out.println(" 相当于Fu类类型转换到了Zi类型,也就是父类到子类的住哪换 大到小 强制类型转换")