Day58 Java面向对象13 instanceof 和 类型转换
1.instanceof关键字
instanceof关键字的作用是判断一个对象是否是某个类或其子类的实例,它返回一个布尔值true/false
dog1 instanceof Dog; //返回true
dog1 instanceof Animals; //返回true
dog1 instanceof Object; //返回true
dog1 instanceof Cat; //返回false
2.对象类型转换
①子转父(向上转型)
- 把子类转换父类
- 自动转换,不需要显示定义
- 只能调用父类中的方法(如果子类进行了重写,执行子类版本),无法调用子类独有方法
Dog dog = new Dog();
Animal a = dog; // 向上转型,自动发生
a.makeSound(); // 调用Dog重写的makeSound()
②父转子(向下转型)
- 把父类转换为子类
- 强制转换,需要显示定义
- 必须保证父类引用实际指向的是该子类对象,否则会抛出异常 ClassCastException
Animal a = new Dog(); // 向上转型
if (a instanceof Dog) {Dog d = (Dog) a; // 向下转型,安全d.bark(); // 可以调用Dog独有的方法
}