interface A { 
   int method1(int i); 
   int method2(int j); 
  } 
为什么下面这样实现接口是错误的 接口不能重载吗?(我顺便问问:重载能不能跨类,比如这个int method1() 算不算做重载)
class B implements A { 
    int method1() { } 
    int method2() { 
    } 
   }而这样就是正确的 
class B implements A { 
    int method1(int i) { } 
    int method2(int j) { } 
   } 

解决方案 »

  1.   

    不是接口能不能重载,而是里面的函数能不能重载.
    接口里面的函数和其他函数一样,是可以重载的.
    interface A {
      int method1(int i);
      int method2(int j);
      int method1();

    method1就被重载了.
    另外,实现A的B类
    abstract class B implements A {
      public int method1() {return 0;}
      int method2() {return 0;}
    }
    其中A中定义的method1()(我加的)被B实现了,而楼主定义的method1(int) method2(int)根本就没有被b实现,所以B必须声明为abstract才能通过编译.
      

  2.   

    不能,并用方法还必须是 public。
      

  3.   

    那不叫重载~~那叫override也就是覆盖
      

  4.   

    override是什么,override是不满意从超类继承的函数实现,而重新改写超类函数的行为.
    overload是什么,我觉得可以看成是一个新函数,它与原来函数的唯一关系就是它们拥有相同的函数名.甚至你可以想象它们是完全不同的两个函数.虽然他们可能实现了相近的语意.
      

  5.   

    方法的重写Overriding和重载Overloading是Java多态性的不同表现。
    重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。对接口来说你的类要implments它,那你就必须写出和接口方法一样的实体方法,包括名字和参数,
    楼主的类中的方法没有参数,当然出错了。
      

  6.   

    多谢谢format_jade(至尊玉) 的回复