instanceof (isinstance) 和class的区别

instanceof (isinstance)代表的是类型的概念,既然是类型就有继承的概念,苹果是水果,但水果不是苹果,但水果也是水果。

所以苹果instanceof水果是true;水果instanceof苹果就是false了。

class不是类型的概念而是类的概念,苹果的class不是水果的class,这个比较用==(equals)

class Base{};
class Extend extends Base{};
public class ConfusedConcept {
    /**
     *the difference between instanceof and class
     */
    public static void main(String[] args) {
        System.out.println( new Base() instanceof Extend);//false
        System.out.println( new Extend() instanceof Base);//true
        System.out.println( new Base().getClass() == new Extend().getClass());//比较的是class实例引用,false

}
}

可见“==”比较较真,是就是,不是就是不是,不含糊;instanceof说起来含含糊糊,但是人家也是有规律的:先来后到可是不能乱的,人是生物不假,生物可不都是人哦。可见较真就能准确定位,含糊却可以体现先后,古人云:物有本末,事有终始,知所先后,则近道矣。细细品来,真实不虚。

posted @ 2017-02-27 22:30  元亨利贞地山谦  阅读(229)  评论(0)    收藏  举报