关于instanceof的用法,谷歌过了,仍有疑问
代码:
Object o=new Circle(); //Circle类继承至Object
if(o instanceof Circle){
System.out.println("OK.");
}
//请问上面的代码为什么会输出,网上说左操作数(o)是右操作数(Circle类)的
//实例或其子类(包含多层继承关系)的实例即返回true,问题是
//o是Object的实例而不是Circle类的实例,且也不是Circle子类的实例
//(Object是所有类的父类)That's why ?
------解决方案--------------------o是变量的类型,为这个变量赋值的是Circle类型,因为Object是Circle的祖先类型所以赋值兼容,所以o现在是Circle类型,你可以输出一下o.getClass()。
------解决方案--------------------Object o=new Circle(); 父类对象通过子类对象实例化以后,父类对象就变为了子类的类型
------解决方案--------------------o=new Circle(); 这个
o对象本质是指向Circle引用。
------解决方案--------------------这一块是java中多态中讲到,o接收的是Circle的实例,o instanceof Circle 结果是true