package javan;
import java.util.*;
 interface Common{
   public abstract int ComputerTime(String v,int a,int b,int c);
}class Car007 implements Common
{
    int A,B,C;
String car;
  public int ComputerTime(String car,int a,int b,int c)
    {
    car="Car";
        this.A=a;
        this.B=b;
        this.C=c;
        return a*b/c;
    }
}public class Main {
    public static void main(String[] args) {
Car007 A=new Car007();
System.out.print("the car speed is " +A.ComputerTime("car", 10, 20, 30));
    }
}
为什么在Car007的ComputerTime方法必须声明为public呢?不声明的话就会报错。就解释,谢谢了.

解决方案 »

  1.   

    因为接口中定义的方法是public,访问级别是最大的。那么在实现这个抽象方法的类中所定义的访问级别不能够小于接口中的方法访问级别。这是规定的
      

  2.   

    子类覆盖父类方法,不能缩小该方法的可见范围。举个简单例子:public interface Super{
    public void foo();
    }public class Sub implements Super{
    private void foo(){
    //do stuff
    }
    }
    上述代码的子类缩小了父类中foo方法的可见范围,这样编译肯定无法通过,为什么要这么规定?如果我作如下方法调用:...
    Super su = new Sub();
    su.foo();
    ...
    根据多态性,su.foo()会调用Sub类中的foo()方法,但是该方法是private的,无法被外界访问,因此这里出现了矛盾,所以java中会有如此规定。
      

  3.   

    我的意思是除了都为public之外的相同
      

  4.   

    接口中的访问方法都是public、abstract的,即使不写,默认也是public的。
    所以定义其他的访问级别就报错了
      

  5.   


    就是权限的问题。因为接口中的方法都是默认的全符修饰的,你就是不加,系统也会默认的给你加上的。全符就是
    public static abstract 方法名();
    当你要实现这个接口的时候就要覆盖它里面的方法,那么这个方法的访问权限就要大于或等于接口中的方法,那么肯定就只能是public了,因为public的访问权限是最大的,这个你懂的,,楼主。
    新手意见理性采纳。感觉其他人说的都对。我就当给你总结一下吧,谢谢!!!