java中的instanceof的一个问题

inspire_YI 2012-04-10 10:03:03
我的JAVA书是这样对instanceof定义的,它说instanceof是用来测试一个指定对象是否是指定类或它的子类的实例,若是则返回true,否则返回false
现在有依一程序,问题就来了
public class Person
{
....
public void display()
{
....
Object obj=this;
if(obj instanceof Student)
System.out.println("是Student类对象");
else if(obj instanceof Person)
System.out.println("是Person类对象");
}
}
class Student extends Person
{
....
public void display()
{
super.display(); //本人比较懒,因为代码较长,中间很多与问题无关的东西用...代替了
....
}
}
public static void main(String[] args)
{
Person per=new Person();
per.display();
Student stu=new Student();
stu.display();
}
按照我的理解Student是Person的子类吧
那么在运行Student中的display()方法时,调用的是Person类的display()方法,在这里,两个判断都应该是通过的吧?因为判断中的this ,既是Student类本身,也是Person类的子类吧?
而从书本上的运行结果看来,只进行一次输出,那第二个判断呢?不用输出?
...全文
212 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sffx123 2012-04-18
  • 打赏
  • 举报
回复
if(A)跟else if(B)表示的是互斥关系,即满足A条件程序就结束该逻辑判断,不会走到else if判断去,lz想要输出两个要改为if() ;if() 表示并列关系互不影响。
yizhizouxiaqu 2012-04-12
  • 打赏
  • 举报
回复
还是理解下if else吧
cjoy4856 2012-04-12
  • 打赏
  • 举报
回复
大哥 你的objcet obj=this 拥有都会是Person对象 你可以通过obj.getClass看看这个的目标类是什么你什么东西都明白了。要使用这类方法,最好先去了解Class类。可能对你有帮助
nmyangym 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

其实我想问的是那两个判断语句里面的条件为什么只有一个成立,而不是两个都成立,因为我个人认为运行到stu.display();这一步的时候两个条件都是满足的吧?
[/Quote]
父类的对象不会是其子类的实例。
比如 Person p=new Person();
p 不会是Student的实例。 用(p instanceof Student)=false.
龙四 2012-04-11
  • 打赏
  • 举报
回复
知道什么叫else if么
inspire_YI 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
引用 3 楼 的回复:

其实我想问的是那两个判断语句里面的条件为什么只有一个成立,而不是两个都成立,因为我个人认为运行到stu.display();这一步的时候两个条件都是满足的吧?

父类的对象不会是其子类的实例。
比如 Person p=new Person();
p 不会是Student的实例。 用(p instanceof Student)=false.
[/Quote]
但是stu这个对象既是Student类的实例,也是Person的子类的实例吧?
inspire_YI 2012-04-10
  • 打赏
  • 举报
回复
其实我想问的是那两个判断语句里面的条件为什么只有一个成立,而不是两个都成立,因为我个人认为运行到stu.display();这一步的时候两个条件都是满足的吧?
chenxiang_java 2012-04-10
  • 打赏
  • 举报
回复
我也不太明白你要说什么。
龙四 2012-04-10
  • 打赏
  • 举报
回复
没明白,但我看到了else if

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧