错误:无法访问类型为OOPTutorial的封闭实例

时间:2012-06-14 10:33:17

标签: java

我是Java新手并尝试做一个简单的程序来帮助我进一步理解面向对象的编程。

我决定做一个电话程序。但是,在以下程序的第5行,我正在尝试创建一个手机类的实例,我收到以下错误:

“无法访问类型为OOPTutorial的封闭实例。必须使用OOPTutorial类型的封闭实例限定分配(例如x.new A()其中xOOPTutorial的实例)。”< / p>

以下是该计划:

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

1 个答案:

答案 0 :(得分:3)

如果您是Java新手,这对您来说可能没有意义,但实例化非静态内部类(phone)需要封闭类的实例(OOPTutorial)。 / p>

用简单的英语,这大致意味着你要么

  1. 只能在未标记为new phone()

  2. 的OOPTutorial方法中执行static
  3. 您需要将phone设为顶级课程(即将其移至OOPTutorial范围之外),或

  4. 您需要将内部类phone设置为静态(通过将static放在类声明前面)