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);
}
}
コンパイル プロセスで以下のエラーが発生するのはなぜですか?
ShowBike.java:12: non-static variable this cannot be referenced from a static context
Bicycle bike = new Bicycle(5);
^
ベストアンサー1
静的にします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);
}
}
ジャワには2種類のネストされたクラス: 「静的ネストクラス」と「インナークラス」キーワードがない場合、これは内部クラスであり、アクセスするにはstatic
のインスタンスが必要になります。ShowBike
ShowBike.Bicycle
ShowBike showBike = new ShowBike();
Bicycle bike = showBike.new Bicycle(5);
静的ネストされたクラスと通常の (ネストされていない) クラスは機能的にはほぼ同じで、グループ化の方法が異なるだけです。ただし、静的ネストされたクラスを使用する場合、それらの定義を別々のファイルに配置することはできないため、1 つのファイルに多数のクラス定義が含まれることになります。