多态
多态也就是对象的多种形态
继承是多态的基础
1.引用多态
父类的引用可以指向本类的对象
父类的引用可以指向子类的对象
2.方法多态
创建本类对象时,调用的方法是本类的方法
创建子类对象时,调用的方法为子类重写的方法或继承的方法;但不能调用子类独有的方法
引用类型的转换:
1.向上类型转换(隐式/自动):小类型向大类型转换
2.向下类型转换(强制转换):大类型向小类型转换
但是强制类型转换有风险,用instanceof运算符,解决引用对象的类型,避免类型转换的安全性问题
instanceof判断一个引用是否是一个类型或者一个类型的子类型,返回值boolean
eg:Dog,Cat,继承Animal
Dog dog=new Dog();
Animal animal=dog; //自动转换
//Dog dog2=(Dog)animal; //强制转换
Cat cat=(Cat)animal; //强制转换,虽然编译不报错,但是运行时是报错的,毕竟animal的引用是dog,不能转换成cat
if(animal instanceof Cat){
//判断animal是否引用的是cat类型
} else{
//无法进行类型转换
}