Java – 类“ClassName”和公共类“ClassName”之间的区别

有什么区别

class x { //code here } 

 public class x { //code here } 

有时我会在互联网上看到例子,他们会有public class而不是class ,他们都是简单的程序。 我将class用于我的作业,其他人也是如此

第一个将导致为您的类分配默认可见性,即package-private (即:在同一个package可访问)。

第二个使它public ,即任何其他类都可见。

参考: 控制对类成员的访问

最简单的方法:

如果你拥有的所有东西都在同一个包中(每个文件顶部的包com.myschool.myapp)那么没有区别,但是如果有什么想要访问它的包之外的任何东西那么它必须是公共的。

例如,“String”在“java.lang”中,你的包几乎肯定不在java.lang中,所以如果string不是公共的,你就无法访问它。

  • 前者是“包可见性”或“默认可见性”,其中类仅对同一包中的类可见。
  • 后者是“公众可见度”,其中任何其他类都可以看到该类。

对于成员和方法以及内部类,还存在以下可见性修饰符:

  • “受保护的可见性”与包相同,只是inheritance使用受保护范围定义的类的任何类也可以访问它。
  • “私人可见性”意味着只能访问该课程
    本身。

第一个是默认类,即它不能在除自身之外的任何其他包中访问,但可以由同一个包中的其他类访问。

第二个使它公开,即你可以从任何类的任何类访问它,就像你访问String和Array一样,如果是不同的包。

请记住,我们正在谈论从包而不是类可访问。

关于,然后:如果我有一个未声明为public的类X(请大写类名),我可以在其中使用公共实例变量(EG public String name;)吗? ;)

是的,您当然可以在非公共类中使用公共实例变量。