class Person{}
class Student extends Person{}
class Postgraduate extends Student{}
class Animal{} 
public class InstanceofTester 
{
   public static void main(String[] args) 
    {
     instanceofTest(new Student());
    }
   public static void instanceofTest(Person p)
    {
  // 判断p的真正类型
       if (p instanceof Postgraduate){
       System.out.println("p是类Postgraduate的实例");
     }
    else if(p instanceof Student)
    {
      System.out.println("p是类Student的实例");
    }
    else if(p instanceof Person)
    {
      System.out.println("p是类Person的实例");
     }
    else if(p instanceof Object)
    {
   System.out.println("p是类Object的实例");
    }
 
 }
}在main方法的一个方法:instanceofTest(new Student());
为什么没有方法体,我用eclipse编的的时候为什么提示class Person{}
中Person已经定义了,编译却任通过??

解决方案 »

  1.   

    instanceofTest(new Student());
    你这不是调用
     public static void instanceofTest(Person p)
    方法么~~~
      

  2.   

    main函数里面只是调用了instanceofTest(Person p)方法,传了一个Student对象。此函数具体的实现在main外面class Person
    {
    }class Student extends Person
    {
    }class Postgraduate extends Student
    {
    }class Animal
    {
    }public class InstanceofTester
    {
    public static void main(String[] args)
    {
    // TODO Auto-generated method stub
    instanceofTest(new Student());
    } public static void instanceofTest(Person p)
    {
    // 判断p的真正类型
    if (p instanceof Postgraduate)
    {
    System.out.println("p是类Postgraduate的实例");
    }
    else if (p instanceof Student)
    {
    System.out.println("p是类Student的实例");
    }
    else if (p instanceof Person)
    {
    System.out.println("p是类Person的实例");
    }
    else if (p instanceof Object)
    {
    System.out.println("p是类Object的实例");
    }
    }
    }
    可以正常编译通过,打印"p是类Student的实例"。