首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

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

2012-12-25 
关于instanceof的用法,谷歌过了,仍有疑问代码:Object onew Circle()//Circle类继承至Objectif(o instanc

关于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

热点排行