instanceof 和 类型转换
instanceof
- 两个类相比较:
- 是否有继承关系,有联系;
- X instanceof Y : X 是否是 Y 的实例(X是不是Y的子类);
- 返回的值是布尔类型。
// 父类
public class Animal(){}
// 子类(Dog类)
public class Dog extends Animal{}
// 子类(Cat类)
public class Cat extends Animal{}
// main方法
public static void main(String[] args) {
Object object = new Cat();
System.out.println(object instanceof Animal); // true
System.out.println(object instanceof Cat); // true
System.out.println(object instanceof Object); // true
System.out.println(object instanceof Dog); // false
System.out.println(object instanceof String); // false
}
类型转化
-
父类引用指向子类的对象
-
类型之间的转换 : 父(高) 子(低)
- 子类转换为父类,向上转型,直接转换;
- 父类转换成子类,向下转换,强制转化。
-
方便方法的调用,减少重复的代码,简洁。
Code:
// 父类
public class Animal(){
public void run(){
System.out.printal("run");
}
}
// 子类(Cat类)
public class Cat extends Animal{
public void go(){
System.out.printal("go");
}
}
public static void main(String[] args) {
// 高 低 强制转换
Animal animal = new Cat();
((Cat)animal).run();
// 低 高 直接转换
Cat cat = new Cat();
cat.go();
}