Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 设置修改器';公共';在接口方法的实现中_Java_Interface - Fatal编程技术网

Java 设置修改器';公共';在接口方法的实现中

Java 设置修改器';公共';在接口方法的实现中,java,interface,Java,Interface,我知道以下代码是错误的,因为类B中方法m1()的标题中缺少修饰符public。但我想知道“为什么?!”。如果缺少public,为什么代码会导致编译错误 提前谢谢 interface A{ void m1(); } class B implements A{ void m1(){ System.out.println("m1"); } } 默认情况下,如果未指定访问修饰符,则方法的访问权限为package private,这意味着它们仅对包和类公开。然而,接口要求方法由使用公

我知道以下代码是错误的,因为类
B
中方法
m1()
的标题中缺少修饰符
public
。但我想知道“为什么?!”。如果缺少
public
,为什么代码会导致编译错误

提前谢谢

interface A{
  void m1();
}
class B implements A{
  void m1(){
    System.out.println("m1");
  }
}

默认情况下,如果未指定访问修饰符,则方法的访问权限为package private,这意味着它们仅对包和类公开。然而,接口要求方法由使用公共接口的类实现


默认情况下,如果未指定访问修饰符,则方法的访问权限为package private,这意味着它们仅对包和类公开。然而,接口要求方法由使用公共接口的类实现


请编辑您的问题,以获得代码的文本副本,而不是屏幕截图。另外,请为所讨论的语言添加适当的标记。@JoeSewell DoneIn接口
A
,方法
m1
隐式
public
。但是对于类
B
方法
m1
隐式
包私有
。而且编译器不允许您为方法分配比接口所允许的更弱的访问权限。这是基于合同设计理念的限制。如果该类可以为该方法分配较弱的访问权限,则该接口公布的契约将被破坏。请编辑您的问题,使其具有代码的文本副本,而不是屏幕截图。另外,请为所讨论的语言添加适当的标记。@JoeSewell DoneIn接口
A
,方法
m1
隐式
public
。但是对于类
B
方法
m1
隐式
包私有
。而且编译器不允许您为方法分配比接口所允许的更弱的访问权限。这是基于合同设计理念的限制。如果类可以为该方法分配较弱的访问权限,则该接口公布的契约将被破坏。