java中的instanceof的一个问题
我的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类的子类吧?
而从书本上的运行结果看来,只进行一次输出,那第二个判断呢?不用输出?