从Interfaces获取的方法的访问修饰符

时间:2013-08-20 04:31:50

标签: java

   interface ursus
{


 public void eat();

}

class grizzly implements ursus
{

 public void eat() //Line 1
 {

  System.out.println("Grizzly  eats Salmon ");
 }

}

class polar implements ursus
{

 public void eat() //Line 2
 {
   System.out.println("Polar eats seals ");
 }

}

class ursus_test
{

 public static void main(String args[])
 {

  grizzly g = new grizzly();
  polar p = new polar();
  p.eat();
  g.eat();

 }

}

当我从第1行/第2行中删除访问修饰符“public”时,编译器会抱怨我对从ursus接口获取的方法“eat()”应用较弱的访问权限。

这是否意味着从接口获得的所有方法都应该只是实现该接口的类的“公共”?

4 个答案:

答案 0 :(得分:3)

根据docs

接口中的公共访问说明符表示该接口可以被任何包中的任何类使用。如果未指定接口是公共接口,则只能在与接口相同的包中定义的类中访问您的接口。

接口中声明的所有方法都是隐式公共的,因此可以省略public修饰符。如果您明确尝试添加其他访问修饰符,则编译器将投诉。

答案 1 :(得分:1)

接口中声明的方法默认为public。这就是编译器抱怨的原因。您无法继承公共方法,然后将其设为protectedprivate

是的,你的假设是正确的。您从界面继承的所有方法都应公开。

答案 2 :(得分:1)

您无法降低任何方法的可见性。 在界面中,默认情况下所有方法都是public,因此您无法使其default access modifier的可见性较低。

答案 3 :(得分:1)

当我们在interface中定义方法签名时,它隐含publicabstractpublicclass实现的每个interface提供了该方法的可见性。因此,根据总统职位,你应该使用public在课堂上继承这些方法。

访问修饰符的主席如下。 public>protected>default(no access modifier)> private.