一、对象的向上转型
向上转型即对象的多态写法,格式:父类名称.对象名=new 子类名称(); 即右侧创建一个子类对象, 把它当做父类使用。
此时,该对象访问成员变量与成员方法具有不同的规则,如下:
①成员变量的使用:
1.直接通过对象名访问成员变量时,看等号左边是谁,优先用谁,没有则向上查找
2.间接通过成员方法访问成员变量时,看该方法属于谁,没有则向上查找
②成员方法的使用:
看new的是谁,就优先使用谁,没有则向上查找
二、对象的向下转型
对象一旦向上转型为父类,那么就无法调用子类原本特有的内容,解决方案即使用向下转型
向下转型格式:子类名称 对象名=(子类名称) 父类对象;
即将父类对象还原为本来的子类对象
如何确定父类引用的对象本来是什么子类,需要使用instanceof关键字
格式:对象名 instanceof 类名称 //将会得到一个boolean值结果,为true则说明原本是该子类
代码演示(常结合接口及多态使用):
父类名称.对象名=new 子类名称(); //创建父类引用对象
if(对象名 instanceof 子类1){
//调用子类1特有方法
}
else if(对象名 instanceof 子类2){
//调用子类2特有方法
}