明确写公开和不写公共有什么区别?

Kac*_*aye 0 java compiler-errors

我认为没有区别,但后来我遇到了这个:

public class Whatever
{

 String toString()  
{
//stuff
}

}
Run Code Online (Sandbox Code Playgroud)

此代码导致编译器错误:

toString()Whatever不能覆盖toString()java.lang.Object; 试图分配较弱的访问权限; 是public

如果我明确键入public String toString()代码编译就好了.

Hun*_*len 5

如果不对public方法和字段使用访问说明符,则假定它们处于package低级可见性之下.

这是一个很好的图表,说明了你班级以外的知名度packagepublic意义:

Modifier       Class    Package   Subclass  World
----------------------------------------------------------
public           Y         Y         Y        Y       
protected        Y         Y         Y        N
no modifier      Y         Y         N        N       <--- This is package level
private          Y         N         N        N
Run Code Online (Sandbox Code Playgroud)

Y 表示方法,类或字段可见.

N表示方法,类或字段可见