对象的上下转型
向上转型
向上转型其实就是多态写法,父类引用指向子类对象。
**格式:**父类名称 对象名 = new 子类名称();
父类接口 对象名 = new 子类接口名称();
注意事项:**向上转型一定是安全的。**从小范围到大范围。
Demo:
Animals animals = new Cat(); //创建了一只猫,将猫当做动物看,正确
类似于:
double num = 100; //正确, int --> double ,自动类型转换。
向下转型
对象的向下转型,其实是一个【还原】的动作。
格式:
子类名称 对象名 = (子类名称) 父类对象;
含义:
将父类对象,【还原】成本来的子类对象。
Demo
Animals animal = new Cat(); //将猫转化为动物。
Cat cat = (Cat) animal; //将被转型为动物的猫还原成为本来的猫
注意事项:
必须保证对象本来创建的时候就是猫,才能向下转型成为猫,否则会报错。
使用instanceOf关键字进行类型判断
使用instanceOf关键字可以判断一个父类引用的对象的本类是不是哪一个类!
格式:
对象 instanceOf 类名称
这时将会得到一个***boolean***值结果,也就是判断前面的对象的本类是不是后面。
Demo:
public static void main(String[] args) {
Animal animal = new Dog();
//判断animals类的本类是不是Dog
if(animal instanceof Dog){
System.out.println("Dog");
}
//判断animals类的本类是不是Cat
if(animal instanceof Cat){
System.out.println("Cat");
}
}