19‐1
図形をモデルとする、次のようなShape01という抽象クラスを作成しなさい。
・横幅を表すint型のwidthというフィールドをもつ。
・高さを表すint型のheightというフィールドをもつ。
・コンストラクタの引数で横幅と高さを指定させる。ただし、コンストラクタの引数の名前はフィールド名と同じにする。
・描画するためのvoid型のdraw()という抽象メソッドをもつ。
19‐2
Shape01を継承し、長方形をモデルとする、次のようなRectangle01というクラスを作成しなさい。
・コンストラクタの引数で横幅と高さを指定させる。ただし、コンストラクタの引数の名前はフィールド名と同じにする。
・コンストラクタからスーパークラスのコンストラクタを呼び出す。
・draw()は■を出力した後、横幅と高さを出力するようにオーバーライドする。
19‐3
Shape01を継承し、楕円形をモデルとする、次のようなEllipse01というクラスを作成しなさい。
・コンストラクタの引数で横幅と高さを指定させる。ただし、コンストラクタの引数の名前はフィールド名と同じにする。
・コンストラクタからスーパークラスのコンストラクタを呼び出す。
・draw()は●を出力した後、横幅と高さを出力するようにオーバーライドする。
19‐4
Shape01を継承し、三角形をモデルとする、次のようなTriangle01というクラスを作成しなさい。
・コンストラクタの引数で横幅と高さを指定させる。ただし、コンストラクタの引数の名前はフィールド名と同じにする。
・コンストラクタからスーパークラスのコンストラクタを呼び出す。
・draw()は▲を出力した後、横幅と高さを出力するようにオーバーライドする。
19‐5
次のような処理を行うExer19_05というクラスを作成・コンパイル・実行し、結果を確認しなさい。
・配列初期化子を使用して、Shape01の配列にRectangle01、Ellipse01、Triangle01のインスタンスを適当に様々な大きさで生成し、代入する。
・配列の全ての要素に対して順番にdraw()メソッドを呼び出す。