2

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

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

“没有 OOPTutorial 类型的封闭实例是可访问的。必须使用 OOPTutorial 类型的封闭实例来限定分配(例如的实例x.new A()在哪里)。”xOOPTutorial

这是程序:

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-method 中执行static,或

  2. 您需要创建phone一个顶级课程(即将其移到 的范围之外OOPTutorial),或者

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

于 2012-06-14T10:37:03.733 回答