このコードに関する何かが私を混乱させます。最初のプリントラインは1600です。私はそれがSportクラスではなく、Carである静的クラスと関係があることを理解しています。しかし、私たちはSportscarとしてオブジェクトを作成しました。なぜ、ボリュームフィールド3500はありませんか?ありがとう。Javaコードの混乱 - 静的バインディングに関連しています。
public class Car {
public int volume;
public Car() { this(1600); }
public Car(int volume) { this.volume = volume; }
public String toString() { return "Car:" + volume; }
}
public class SportsCar extends Car {
public int volume;
SportsCar() { this(3000); }
SportsCar(int volume) { this.volume = volume; }
public String toString() {return "SportsCar:"+volume;}
}
public class CarApplication {
public static void main(String [] args) {
Car car = new SportsCar(3500);
System.out.println(car.volume);
System.out.println(car.toString());
System.out.println(car);
}
}
http://stackoverflow.com/questions/685300/is-thereにキャストされていますので、この意志出力3500、:
別のオプションは、このことだろう-a-way-to-override-class-variables-in-java –
あなたの投稿は有効なコードのみを含むように編集してください - つまり、行番号を取り除いてください。 –