多态
**********************************************************************************************************
概念:
相同的行为,不同的实现。 ----------------------一定是方法多态。
分类:
1.静态多态:在编译的时候,系统就决定调用哪个方法了。
2.动态多态:在运行中,系统才能动态确定方法所指的对象。
其中动态多态主要使用重写,以及动态绑定技术。
动态绑定又主要分为:转型技术以及绑定技术。
**********************************************************************************************************
类型的转换:
1.向上转型:把子类的对象赋给父类的变量 ------------一定成功,无风险。
2.向下转型:把父类的值(引用值)赋给子类的变量---------------不一定成功,有风险。
这里向下转型就需要用到强转了:
语法:
子类 变量 = (子类)该子类对象
子类 变量 = (子类)父类对象或者其他子类对象→编译成功 ,运行失败。
为了控制这个风险,就应该先判定后再进行强转。
引入instanceof
**********************************************************************************************************
instanceof
语法:
对象 instanceof 类型 如果对象是这个类型的,那么就返回true
否则为false。
**********************************************************************************************************
当父类引用指向子类对象的时候,如果我们调用被重写的方法,会得到子类重写后的
效果,因为,这个对象本身就是一个子类对象,所以他的实现一定是子类自己实现。
基本数据类型没有父类一说,所以Object里面是放不进去的。
但是:
eg:Object [ ] all =new Object[ 10];
Object [ 1] =100;
这里面第二行代码运行却是没有错的。
因为这里面有后台转换,其实代码应该是:
Object [1] = new Integer(100);
系统将100转换为对象的形势保存在了Object里面。