2013-04-24 7 views
5

私はJavaを学び始めており、Eclipseで初めてのhello world関数を作成しました。Javaの宣言されていないクラスは公開されていますか?

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!"); 
    } 
} 

どちらも成功し「印刷:私は、次の2つの関数、私のJavaプロジェクトのsrcフォルダのデフォルト・パッケージ内の両方が、同じことを行うように見えることに気付きましたこんにちは世界!'コンソールに接続します。

私はさまざまなクラスタイプについて少しは読んだことがありますが、最初の関数で宣言するクラスのタイプは不明です。これら2つの機能の違いは何ですか? Javaは最初のケースで私のこんにちは世界クラスを公開しますか?

+4

パッケージ非公開 – soulcheck

答えて

10

package protectedであることを示します。つまり、classはそのパッケージでのみアクセス可能です。

アクセプト修飾語の非常に有用な概要stackoverflow。もっとoracle

で例:

それでは、次のようなパッケージ構造を持っているとしましょう:

com 
    stackoverflow 
    pkg1 
     public Class1 
     Class2 
    pkg2 
     OtherClass 

Class2Class1だけを使用することができますが、OtherClass

1

によってそれはすべてですありませんクラスの可視性について

modifier publicでクラスを宣言することができます。この場合、そのクラスはすべてのクラスですべてのクラスで可視です。クラスは何の修飾子(デフォルト、またパッケージプライベートとして知られている)を持っていない場合は、それだけでそれがクラスを保護されて

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

0

独自のパッケージ内に表示されている、あなたはそのクラスアウトサイドpackageにアクセスすることはできません。

あなたは、デフォルトではその何も指定しない場合は、これは私にGoogleで検索する約2秒かかりました

1

を保護:あなたの質問への答えで

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

を、デフォルトの修飾子は、package protectedそれはパッケージ内でしかアクセスできないことを意味しますが、次回は質問を投稿する前にいくつかの調査をしてください。それは検索する必要がある質問を書く時間がかかります

関連する問題