日期:2014-05-20  浏览次数:20653 次

关于抽象类,继承,上转型的使用
abstract class A{
  public abstract void f(int x);
  public abstract void g(int x,int y);
  public abstract double h(double x);
}

class a extends A{
  public void f(int x){
  System.out.println("在a中,f()");
  }
  public void g(int x ,int y){
  System.out.println("在a中,g()");
  }
  public double h(double x){
  System.out.println("在a中,h()");
  return 0;
  }
}
public class f2{
  public static void main(String args[]){
  A p; 
  p=new a();  
  p.f(1);
  p.g(1,1);
  p.h(1);
  }
}
可以编译,运行卜了.求解

------解决方案--------------------
你的a跟A可能会有点问题,把a改成别的字母吧
------解决方案--------------------
我还以为是java区分大小写是可以的,试了一下,还真不行
Java code

abstract class A{
  public abstract void f(int x);
  public abstract void g(int x,int y);
  public abstract double h(double x);
}

class B extends A{
  public void f(int x){
  System.out.println("在B中,f()");
  }
  public void g(int x ,int y){
  System.out.println("在B中,g()");
  }
  public double h(double x){
  System.out.println("在B中,h()");
  return 0;
  }
}
class f2{
  public static void main(String args[]){
  A p;  
  p=new B();   
  p.f(1);
  p.g(1,1);
  p.h(1);
  }
}

------解决方案--------------------
Windows 文件系统的文件名不区分大小写,编译之后A跟a生成的.class文件只能剩一个,所以执行的时候报找不到class文件错误。