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
隐式包私有
。而且编译器不允许您为方法分配比接口所允许的更弱的访问权限。这是基于合同设计理念的限制。如果类可以为该方法分配较弱的访问权限,则该接口公布的契约将被破坏。