0

アクセス修飾子をよりよく理解するために、いくつかのコードを試していました。たった1行のコードを追加しただけで、すべてがうまくいきました

class SomeClass2 {

  protected static void method4() { }
  protected static int x=0;
}
class SomeClass3 extends SomeClass2{

    int c=SomeClass2.x;
    public void somemethod() //Everything was compiling fine until
    {                        //Until I added this method
    SomeClass2.method4();
    }
}
class DemoClass1{
      public static void main(String[] parameters) {
    SomeClass2 sc = new SomeClass2();
    SomeClass3 sc1 = new SomeClass3();

    sc.method4();
    System.out.println(sc1.c);
sc1.somemethod();

  }
}

エラーが表示されます:Could not find or load main class DemoClass1 すべてのクラスが同じディレクトリと同じパッケージに属しています。また、環境変数もすべて設定されています。追加するまで、コンパイルして正常に実行されていましsomemethod()た。正常にコンパイルされますが、実行されません。

4

2 に答える 2

2

あなたが提供したコードに明らかな問題はありません。

ファイルの名前を変更しましたか?

JVM は、ファイル名とまったく同じ名前のクラス内でメイン メソッドを探します。この場合、ファイルに名前を付ける必要があります

DemoClass1.java
于 2013-02-19T00:47:56.347 に答える
0

コードに問題はありません。各クラスをそれぞれのファイル ( DemoClass1.javaSomeClass2.javaおよびSomeClass3.java) に保存しました。

の有無にかかわらず、すべてが正常にコンパイルおよび実行されsomemethodました。

于 2013-02-19T00:51:20.023 に答える