当前位置: 代码迷 >> J2EE >> 关于instanceof的用法,谷歌过了,仍有疑问解决办法
  详细解决方案

关于instanceof的用法,谷歌过了,仍有疑问解决办法

热度:1756   发布时间:2013-02-25 21:41:05.0
关于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()。这一块是java中多态中讲到,o接收的是Circle的实例,o instanceof Circle 结果是trueo=new Circle();  这个
o对象本质是指向Circle引用。
Object o=new Circle();  父类对象通过子类对象实例化以后,父类对象就变为了子类的类型
  相关解决方案