0

多くの場所で述べられているように、クラスはパッケージ プライベート アクセス レベルを生成します。これは、そのようなクラスは、同じパッケージである他のクラスのみがアクセスできることを意味します。私はパッケージについて多くのことを知りませんが、ファイルの先頭に「パッケージ x」を追加することを知っていれば、私の質問を提起するのに十分な知識があると思います。

クラスの要素を含むファイルを作成しました。別のファイルが含まれています

public class cooking{ 
    public static void main(String[] args) {.....

パッケージ宣言はどこにもありません。それでも、私のプログラムは 2 つのファイルを正常にコンパイルし、実行します。私は何が欠けていますか?料理教室は食材が見えなくていいの?

4

4 に答える 4

1

IDE (netbeans や eclipse など) はコードをコンパイルします。これは、両方のクラスが同じプロジェクトにあり、そのクラスを意味することを「認識」しているためです。

于 2013-04-07T21:03:53.047 に答える
1

Java 言語仕様で説明されているように、クラスは名前のないパッケージの一部であるため、クラスは互いに認識できます。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.4.2

于 2013-04-07T21:13:16.237 に答える
1

クラスは、インポートステートメントなしで同じディレクトリ内の他のクラスを見ることができます。パッケージは、コードを整理する方法であり、基本的にはアプリケーション フォルダー内の単なるディレクトリです。すべてのクラスは、インポートを必要とせずに同じクラス内の他のクラスを見ることができます。それは、構造が次のように異なるパッケージが定義されている場合です。

src
 |
 +- Cooking.java
 |
 +- utilities
     |
     +- Ingredient.java

もちろん、 Ingredient ファイルの前に が付けpackage utilities;られ、クッキングからアクセスしようとするとimport utilities.Cooking;、ファイルに含まれていない限りエラーが発生します。Package-private とは、パッケージ (またはフォルダー) の外部のクラスがファイルまたはその Package-private プロパティを表示またはアクセスできないことを意味します。

于 2013-04-07T21:06:28.850 に答える
1

package ステートメントを Java クラスに追加しない場合、これらのクラスは同じパッケージ (いわゆる「デフォルト」パッケージ) に含まれます。したがって、クラスをパブリックとして定義するかどうかに関係なく、これらのクラスは相互にアクセスできます。

public class A

= このクラス A はすべてのパッケージで表示されます

class B

= このクラス B は、B と同じパッケージ内のクラスによってのみ表示されます

于 2013-04-07T21:07:56.560 に答える