0

さて、私は次のコードを持っています:

package executive;

import animals.*;

public class MainFile {

    public static void main(String[] args) {

        dog Robbie;
        Robbie = new dog();

        Robbie.lick();
        Robbie.jump();


    }

}

Animals パッケージには、クラス dog があります (はい、これが本当に役に立たないプログラムであることはわかっています)。

package animals;

public class dog {

    void lick() {
        System.out.println("lick lick");
    }
    void jump() {
        System.out.println("Whihoooo");
    }
}

しかし、このコード (eclipse) を実行すると、次のエラーが表示されます。

この問題を抱えているほとんどの人はクラスを公開していませんが、私は公開しています。犬クラスを同じパッケージに入れている時点で、コードはうまく機能しています。

4

6 に答える 6

2

アクセス修飾子のないデフォルトの可視性は、世界から見えません。

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

于 2013-11-05T16:23:07.683 に答える
1

両方のメソッドの現在の可視性はpackage-private (明示的な修飾子なし) です。つまり、同じパッケージ内のクラスからのみアクセスできます。MainFileとは同じパッケージに含まれていないためdog、これらのメソッドにはアクセスできません。2 つのメソッドをパブリックとして宣言する必要があります。

于 2013-11-05T16:23:37.610 に答える
0

あなたのメソッドlickjumpはパッケージプライベートであるため、つまり、パッケージアニマル内でのみ表示されます

あなたの質問に答えるために:それらをパブリックメソッドにするか、パッケージプライベートが望ましい場合はMainFileクラスをアニマルパッケージに移動します

于 2013-11-05T16:21:55.797 に答える
0

メソッドを として宣言しますpublic

public void lick()

このウェブサイトから取得

デフォルトのアクセス修飾子とは、クラス、フィールド、メソッドなどのアクセス修飾子を明示的に宣言しないことを意味します。アクセス制御修飾子なしで宣言された変数またはメソッドは、同じパッケージ内の他のクラスで使用できます。インターフェイスのフィールドは暗黙的に public static final であり、インターフェイスのメソッドはデフォルトで public です。

、または変数またはメソッド宣言の前access modifierの単語はどこにありますか。publicprivateprotected


私がここにいる間、Java Naming Conventionsを見てください。これらの命名規則は、すべてのコードを標準形式で読みやすくするために設計されています。

最初のエラーは、dogクラスの命名です。名前はDog、すべてのクラスが大文字で始まるためです。

2 番目のエラーは変数名にありますRobbie。これはrobbie、すべてのオブジェクト参照と変数が小文字で始まる必要があるためです。変数に複数の単語がある場合、変数は小文字で始まり、後続のすべての単語は大文字の値で始まります。たとえばvalidVariableName

于 2013-11-05T16:23:01.680 に答える
0

メソッドは公開されていないため、ほとんど表示されません。パッケージをインポートしても、アクセス修飾子のないメソッドは他のパッケージから見えないため、それらをパブリックにすると機能するはずです

package animals;

public class dog {

    public void lick() {
        System.out.println("lick lick");
    }
    public void jump() {
        System.out.println("Whihoooo");
    }
}
于 2013-11-05T16:24:50.117 に答える
0

Java アクセス修飾子

メソッドには、クラスだけでなくアクセス修飾子も必要です。

アクセス修飾子を省略した場合、デフォルトは「package private」と呼ばれます。これは、同じパッケージ内のクラスのみがメソッドを呼び出すことができることを意味します。

メソッドを他のパッケージのクラスから呼び出せるようにしたい場合は、アクセス修飾子を に変更する必要がありますpublic

于 2013-11-05T16:25:52.373 に答える