は私のコードのJavaオーバーライド説明はここで
class Glyph {
void draw() { System.out.println("Glyph.draw()"); }
Glyph(int i) {
System.out.println("Glyph() before draw()");
draw();
System.out.println("Glyph() after draw()");
}
}
class RoundGlyph extends Glyph {
private int radius = 1;
RoundGlyph(int r) {
super(r);
radius = r;
System.out.println("RoundGlyph.RoundGlyph(), radius = " + radius);
}
void draw() {
System.out.println("RoundGlyph.draw(), radius = " + radius);
}
}
public class PolyConstructors {
public static void main(String[] args) {
new RoundGlyph(5);
}
}
出力です:
Glyph() before draw()
RoundGlyph.draw(), radius = 0
Glyph() after draw()
RoundGlyph.RoundGlyph(), radius = 5
なぜサブクラスRoundGlyph
のdrawメソッドを呼び出し、スーパークラスGlyph
のコンストラクタはありますか?どのようにスーパークラスのコンストラクタからスーパークラスの描画メソッドを呼び出すことができますか? CTORから非プライベートまたは非静的メソッドの呼び出しは、呼び出し元になりますので、私はこれを試してみましたが、それはうまくいきませんでした....
はい私は今は知っていましたが、どのように、なぜこれがこのように機能しているのか不思議でした。 –