public class Grandpa {}
public class Parent extends Grandpa {}
public class Sub extends Parent{}
public class TestCode {
public static void main(String[] args) {
Parent parent = new Parent();
Sub sub = new Sub();
System.out.println(sub instanceof Parent);//true
System.out.println(sub instanceof Grandpa);//true
System.out.println(parent instanceof Sub);//false
//由此可见 instanceof 只有子类与父类比较的时候 才是true
System.out.println("=================");
Sub son = new Sub();
System.out.println(son.getClass() == sub.getClass());//true
System.out.println(parent.getClass() == sub.getClass());//false
//由此可见getClass只有是同一类型的才是true 不考虑父类
}
}
instanceof进行类型检查规则是:你属于该类吗?或者你属于该类的派生类吗?而通过getClass获得类型信息采用==来进行检查是否相等的操作是严格的判断。不会存在继承方面的考虑;