2

私はJavaを初めて使用し、オブジェクト指向プログラミングをさらに理解するのに役立つ簡単なプログラムを実行しようとしています。

私は電話プログラムをすることにしました。ただし、電話クラスのインスタンスを作成しようとしている次のプログラムの5行目で、次のエラーが発生します。

「タイプOOPTutorialの包含インスタンスにアクセスできません。タイプOOPTutorialの包含インスタンスで割り当てを修飾する必要があります(たとえばx.new A()、はのxインスタンスですOOPTutorial)。」

プログラムは次のとおりです。

public class OOPTutorial {

    public static void main (String[] args){

        phone myMobile = new phone();           // <-- here's the error
        myMobile.powerOn();
        myMobile.inputNumber(353851234);
        myMobile.dial();

   }

   public class phone{
       boolean poweredOn = false;
       int currentDialingNumber;

       void powerOn(){
           poweredOn = true;
           System.out.println("Hello");
       }
       void powerOff(){
           poweredOn = false;
       System.out.println("Goodbye");
       }
       void inputNumber(int num){
       currentDialingNumber = num;
       }
       void dial(){
           System.out.print("Dialing: " + currentDialingNumber);
       }
   }
}
4

1 に答える 1

3

Javaを初めて使用する場合、これは意味をなさないかもしれませんが、非静的内部クラス(phone)をインスタンス化するには、それを囲むクラス(OOPTutorial)のインスタンスが必要です。

平易な英語では、これは大まかにあなたがどちらかを意味します

  1. 、またはnew phone()としてマークされていないOOPTutorialメソッド内でのみ実行できますstatic

  2. phoneトップレベルのクラスを作成する(つまり、スコープ外に移動する)必要がありますOOPTutorial。または

  3. 内部クラスを静的にする必要があります(クラス宣言の前にphone置くことによって)static

于 2012-06-14T10:37:03.733 に答える