我是Java新手并尝试做一个简单的程序来帮助我进一步理解面向对象的编程。
我决定做一个电话程序。但是,在以下程序的第5行,我正在尝试创建一个手机类的实例,我收到以下错误:
“无法访问类型为OOPTutorial的封闭实例。必须使用OOPTutorial类型的封闭实例限定分配(例如x.new A()
其中x
是OOPTutorial
的实例)。”< / 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);
}
}
}
答案 0 :(得分:3)
如果您是Java新手,这对您来说可能没有意义,但实例化非静态内部类(phone
)需要封闭类的实例(OOPTutorial
)。 / p>
用简单的英语,这大致意味着你要么
只能在未标记为new phone()
或
static
您需要将phone
设为顶级课程(即将其移至OOPTutorial
范围之外),或
您需要将内部类phone
设置为静态(通过将static
放在类声明前面)