mko*_*mko 27 java oop inner-classes
我编写了下面的代码来测试Java中的类和对象的概念.
public class ShowBike {
private class Bicycle {
public int gear = 0;
public Bicycle(int v) {
gear = v;
}
}
public static void main() {
Bicycle bike = new Bicycle(5);
System.out.println(bike.gear);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么这会在编译过程中给出以下错误?
ShowBike.java:12: non-static variable this cannot be referenced from a static context
Bicycle bike = new Bicycle(5);
^
Run Code Online (Sandbox Code Playgroud)
Alv*_*ong 40
制作ShowBike.Bicycle静态.
public class ShowBike {
private static class Bicycle {
public int gear = 0;
public Bicycle(int v) {
gear = v;
}
}
public static void main() {
Bicycle bike = new Bicycle(5);
System.out.println(bike.gear);
}
}
Run Code Online (Sandbox Code Playgroud)
在Java中,有两种类型的嵌套类:"静态嵌套类"和"内部类".没有static关键字,它是一个内部类,您将需要一个ShowBike访问实例ShowBike.Bicycle:
ShowBike showBike = new ShowBike();
Bicycle bike = showBike.new Bicycle(5);
Run Code Online (Sandbox Code Playgroud)
静态嵌套类和普通(非嵌套)类在功能上几乎相同,它只是不同的分组方式.但是,在使用静态嵌套类时,不能将它们的定义放在单独的文件中,这将导致包含大量类定义的单个文件.
Bicycle是一个内部类,因此您需要外部类实例来创建内部类实例,如:
ShowBike sBike = new ShowBike();
Bicycle bike = sBike.new Bicycle(5);
Run Code Online (Sandbox Code Playgroud)
或者您可以简单地声明Bicycle 类static以使您当前的方式工作.