class A { }
class B extends A { } Object o1 = new A(); Object o2 = new B(); o1 instanceof A => true o1 instanceof B => false o2 instanceof A => true // <================ HERE o2 instanceof B => true o1.getClass().equals(A.class) => true o1.getClass().equals(B.class) => false o2.getClass().equals(A.class) => false // <===============HERE o2.getClass().equals(B.class) => true getClass() will be useful when you want to make sure your instance is NOT a subclass of the class you are comparing with.