abstract class Test
{
public abstract  int addition(); 
public abstract  int subtration();
public abstract  int multiplication();
public abstract  int division(); 
}
class OverloadTest extends Test
{
public int addition(int x, int y)
{
return x + y;
}
public int subtration(int x, int y)
{
return x - y;
}
public int multiplication(int x, int y)
{
return x * y;
}
public int division(int x, int y)
{
return x / y;
}
public static void main(String[] args)
{
private int x = 10;
private int y = 10;
addition(x, y);
subtration(x, y);
multiplication(x, y);
division(x ,y);
}
}编译有错 请大家看看错在哪里

解决方案 »

  1.   

    abstract class Test
    {
    public abstract  int addition(); 
    public abstract  int subtration();
    public abstract  int multiplication();
    public abstract  int division(); 
    }
    中所有方法没带参数
      

  2.   

    public static void main(String[] args)
    {
    private int x = 10;
    private int y = 10;
    addition(x, y);
    subtration(x, y);
    multiplication(x, y);
    division(x ,y);
    }
    方法中先实例化一对象后再调用addition(x, y)等
    OverloadTest o=new OverloadTest();
    o.addition(10,10)
      

  3.   

    static 方法中调用的方法也应是static
      

  4.   

    据目测,至少有2个错误。(1)
    public abstract  int addition(); 
    public abstract  int subtration();
    public abstract  int multiplication();
    public abstract  int division(); 
    这四个抽象方法没有被实现。
    因为public abstract int addition()和public abstract int addition(int int)是两个不同的方法。(2)
    main主函数里,没有OverloadTest类的实例,不能调用该类的“非抽象”方法。
      

  5.   

    更正:应该是:
    (2)
    main主函数里,没有OverloadTest类的实例,不能调用该类的“非静态”方法。
      

  6.   

    楼主给类起了个OverloadTest的名字,不知何意?---初学者
      

  7.   

    abstract class Test
    {
             int x,y;
    public abstract  int addition(x,y); 
    public abstract  int subtration(x,y);
    public abstract  int multiplication(x,y);
    public abstract  int division(x,y); 
    }
    class OverloadTest extends Test
    {
    public int addition(int x, int y)
    {
    return x + y;
    }
    public int subtration(int x, int y)
    {
    return x - y;
    }
    public int multiplication(int x, int y)
    {
    return x * y;
    }
    public int division(int x, int y)
    {
    return x / y;
    }
    public static void main(String[] args)
    {
    private int x = 10;
    private int y = 10;
                      OverloadTest olt=new OverloadTest;
    olt.addition(x, y);
    olt.subtration(x, y);
    olt.multiplication(x, y);
    olt.division(x ,y);
    }
    }
      

  8.   

    public static void main(String[] args)
    {
    private int x = 10;
    private int y = 10;
    addition(x, y);
    subtration(x, y);
    multiplication(x, y);
    division(x ,y);
    }to:public static void main(String[] args)
    {
    int x = 10;
    int y = 10;
    Test t = new OverloadTest();
                      t.addition(x, y);
    t.subtration(x, y);
    t.multiplication(x, y);
    t.division(x ,y); }
    至于为什么请你去看看书了,重点看多态这部分
    共同进步
      

  9.   

    abstract class Test
    {
        int x,y;
    public abstract  int addition(int x, int y); 
    public abstract  int subtration(int x, int y);
    public abstract int multiplication(int x, int y);
    public abstract  int division(int x, int y); 
    }
    class OverloadTest extends Test
    {
    public int addition(int x, int y)
    {
    return x + y;
    }
    public int subtration(int x, int y)
    {
    return x - y;
    }
    public int multiplication(int x, int y)
    {
    return x * y;
    }
    public int division(int x, int y)
    {
    return x / y;
    }
    public static void main(String[] args)
    {
      int x = 10;
      int y = 10;
          OverloadTest olt=new OverloadTest();
    olt.addition(x, y);
    olt.subtration(x, y);
    olt.multiplication(x, y);
    olt.division(x ,y);
    }
    }
    改成这样为何没输出啊 编译通过了
      

  10.   

    是没有输出啊,因为你没让它输出嘛。
    不光没有输出,就连+-×÷四个返回值都被扔掉啦。你得让它输出呀:
    System.out.println(olt.addition(x, y));
    System.out.println(olt.subtration(x, y));
    System.out.println(olt.multiplication(x, y));
    System.out.println(olt.division(x ,y));
      

  11.   

    为什么在main()中 把int x = 10; int y = 10;
    改为private int x = 10;
        private int y = 10;
    编译器会提示错误啊
      

  12.   

    静态方法中不能有private型变量.
      

  13.   

    main方法被声明为public static的,所以无须创建实例外部方法就应该能访问它的成员变量和函数,所以成员变量不能被声明成private的,这是我的看法,希望高手指教
      

  14.   

    一:要想实现多态必须覆盖抽象类的abstract方法(如果要覆盖方法名,方法特征签名,返回类型必须相同),但是在你的OverloadTest中只是重新定义了一些新方法。二:既然你没有覆盖父类的abstract方法,那么你就继承了那些abstract方法,如果类中有abstract方法那此类必须申明为abstract类。
      

  15.   

    三:在静态方法main()中不可以调用非静态方法;
    四:在静态方法中不可以申明带访问修饰符的变量(如果有修饰符只能是final),因为方法中定义的变量是局部变量。