public class Bicycle {
private int cadence;
private int gear;
private int speed;
private int id;
private static int numberOfBicycles = 0;
public Bicycle(int startCadence, int startSpeed, int startGear){
gear = startGear;
cadence = startCadence;
speed = startSpeed;
id = ++numberOfBicycles;
}
// ...
}
私はクラスでそれを学びましたStatic variables should be accessed by calling with class name
。すなわちClassName.VariableName
しかし、上記のコードではid = ++numberOfBicycles;
、変数numberOfBicycles
が次の場合でも、このステートメントはエラーなしでどのようにコンパイルされますか?static
静的変数は、個々のインスタンス(オブジェクト)ではなく、クラスによって所有されます。クラスの外で静的変数を参照するClassName.myStaticVariable
ことは、クラス内では他のインスタンス変数と同様です。
静的変数は常に非静的メソッドで使用できますが、静的メソッドがロードされた場合は、他の非静的インスタンス変数が作成されないため、静的メソッドで非静的変数を使用することはできません。
したがって、ステートメントid = ++numberOfBicycles;
は完全に有効であり、エラーなしでコンパイルされます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加