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

时间:2011-10-03 23:40:17

标签: java class

之间有什么区别
class x {
    //code here
}

public class x {
    //code here
}

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

4 个答案:

答案 0 :(得分:34)

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

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

参考:Controlling Access to Members of a Class

答案 1 :(得分:9)

最简单的说法:

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

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

答案 2 :(得分:5)

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

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

  • “受保护的可见性”与包相同,但任何类除外 继承使用受保护范围定义的类也可以访问 它。
  • “私密可见性”表示该类只能访问 本身。

答案 3 :(得分:0)

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

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

请记住,我们谈论的是从包而不是类中访问。

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

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