interface myItfc
{
double area(double a, double b);
}class test implements myItfc
{
double area(double a, double b)
{
return 0.1;
}
}--------------------Configuration: JDK version 1.5.0_02 <Default>--------------------
F:\temp\d\B.java:8: area(double,double) in test cannot implement area(double,double) in myItfc; attempting to assign weaker access privileges; was public
double area(double a, double b)
               ^
1 errorProcess completed.这是怎么回事啊?一定要把area声明为public吗?
还有我试过在interface里声明area为protected,或者private都说不能这么声明。
在接口里面只能声明为
public或者不声明吗?

解决方案 »

  1.   

    interface中的所有东东都是public,实现时不能缩小他们的可见性
      

  2.   

    interface 里的接口只是给出一个声明,必须要在某个类中 具体实现,所以只能声明为public,缺省的意思就是public。类中缺省是package,权限降低是不允许的。
    见《java编程思想》(第三版)249页。
      

  3.   

    interface里面所有的方法都是public的.
      

  4.   

    interface中的方法都是public
    你不可以降低访问权限
      

  5.   

    接口里默认的访问级别就是public , 实现类不能缩小只能扩大接口的访问级别。
      

  6.   

    这样想撒,interface本来就是给其他类继承的,如果把接口里面的方法设置成protected,或者private了,那不是把继承这个接口的类受到的限制。接口本来就是给其他类继承的,所以他默认就是public。
      

  7.   

    听说在Java里Interface是个好东西.---初学者
      

  8.   

    二楼说的对在interface myItfc中若不说明方法的存取权限则默认为public(如area);
    在class test中默认为packge或叫default,它的存取权限介于public 和protect之间,比public低;
    但java规定子类重写父类的方法时,存取权限只能扩大或不变,不能降低另外,interface中的方法只能声明为public或不声明,因为接口即让外界知道,对外开放的意思,所以不能声明为private
      

  9.   

    interface中的方法缺省为public,当要实现一个接口的时候,在接口中被定义的方法必须被定义为public.否则,他们只能得到缺省的包访问权限,这样方法在被继承的过程中,其可访问权限被weaken了,这是java编译器不允许的。
      

  10.   

    所有方法和变量全部是public