//FindErrors.java
 class Find
 {
public int i;
public void f()
{
 System.out.println("Find.f()");
};
 }
 class NewFind extends Find
  {
public void f(){System.out.println("NewFind.f()");}
public void f1(){System.out.println("NewFind.f1()");}
public void f(long i){this.i=(int)i;}
  }
 class FindErrorsA extends Find
  {
public void f2(Find ff)
 {
      if(ff instanceof NewFind)
       {
                  
         ((NewFind)ff).f1();
         ff.f();
       }
 }
  }
 public class FindErrors
 {
public static void main(String args[])
{
 Find nf=new FindErrorsA();
 ((FindErrorsA)nf).f2(nf);
}
 }好不容易!拿去用!

解决方案 »

  1.   

    System.out.println("Find.f()")
    少了 ;
    public void f(){System.out.println("NewFind.f()");}
    public void f1(){System.out.println("NewFind.f1()");}
    是死循环,而且没有创建实例
    不应该有两个public class FindErrors
    把两个的public class FindErrors 合并
    f2(nf);应该改成nf.f();  //愈发也错,而且NewFind里面没有f2这个函数
    if(ff instanceofNewFind)   instanceof NewFind
    public void f(long i){this.i=i;}  this.i是int, i是long,溢出错误static main(...
    太多错误了哦!!!
      

  2.   

    唉,如果你真在做这个题我只能说你精神可嘉,不过建议你好好看看
    Thinking In java这本书,对于多态性,兄弟我只能说你还没入门
    入门前千万别在说什么OO的了,别人听着会笑的还有兄弟你 gularess(无吃哪拉) ,你以为  ((NewFind)ff).f1();
    这样就行了阿,看样子对于造型你也没入门,赶快回去好好学学吧
      

  3.   

    public class Find
     {
    public int i;
    public void f()
    {
     System.out.println("Find.f()");
    }
     }
    public class NewFind extends Find
      {
    public void f(){System.out.println("NewFind.f()");}
    public void f1(){System.out.println("NewFind.f1()");}
    public void f(long i){this.i=(int)i;}
      }
     public class FindErrors extends Find
      {
    public void f2(Find ff)
     {
          if(ff instanceof NewFind)
           {
            // ff.f1();//这句只能注释掉,为什么自己看书。或者要么这么写
    /*
    public void f2(NewFind ff)
    {
          if(ff instanceof NewFind)
           {
             ff.f1();
             ff.f();
           }
     }
    */
             ff.f();
           }
     }
     public void main(String args[])
    {
     NewFind nf=new NewFind();
     f2(nf);
    }
      }
      

  4.   

    public class Find
     {
    public int i;
    public void f()
    {
     System.out.println("Find.f()");
    }
     }
    public class NewFind extends Find
      {
    public void f(){System.out.println("NewFind.f()");}
    public void f1(){System.out.println("NewFind.f1()");}
    public void f(long i){this.i=(int)i;}
      }
     public class FindErrors extends Find
      {
    public void f2(Find ff)
     {
          if(ff instanceof NewFind)
           {
            // ff.f1();//这句只能注释掉,为什么自己看书。或者要么这么写
    /*
    public static void f2(NewFind ff)
    {
          if(ff instanceof NewFind)
           {
             ff.f1();
             ff.f();
           }
     }
    */
             ff.f();
           }
     }
     public static void main(String args[])
    {
     NewFind nf=new NewFind();
     f2(nf);
    }
      }