5

我开始学习 java 并在 Eclipse 中创建了我的第一个 hello world 函数。我注意到以下两个函数,都在我的 java 项目的 src 文件夹的默认包中,似乎做同样的事情:

class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

public class HelloWorld {
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

两者都成功打印“Hello World!” 到控制台。

我已经阅读了一些关于不同类类型的文章,但不确定我将使用第一个函数声明什么类型的类。这两个函数有什么区别?java是否在第一种情况下公开了我的hello world类?

4

4 回答 4

10

Class那不是按原样声明自己publicpackage protected这意味着class它只能在该包中访问。

stackoverflow上访问修饰符的非常有用的总结。更多在甲骨文

例子:

因此,假设您具有以下包结构:

com
  stackoverflow
    pkg1
      public Class1
      Class2
    pkg2
      OtherClass

Class2只能被 使用Class1,不能被OtherClass

于 2013-04-24T15:37:49.923 回答
1

这都是关于课堂可见性的!

可以使用修饰符 public 声明一个类,在这种情况下,该类对任何地方的所有类都是可见的。如果一个类没有修饰符(默认值,也称为包私有),则它只在自己的包中可见

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

于 2013-04-24T15:38:41.820 回答
1

这花了我大约 2 秒钟在 Google 上找到:

http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

在回答您的问题时,默认修饰符是package protected,这意味着它只能在包内访问,但下次请在发布问题之前做一些研究,因为您需要更多时间来编写必须搜索的问题

于 2013-04-24T15:39:43.080 回答
0

它是受保护的类,你不能在外面访问那个类package

如果您未指定任何内容,则默认情况下受保护

于 2013-04-24T15:39:35.010 回答