
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
Javaプログラム(Goods、SaleGoods extends Goods、ShopのcalculateAmount)に用いられているオブジェクト指向技術の組合せを選ぶ問題。オーバーライドとポリモーフィズムが用いられている。
コードの中で、どのオブジェクト指向技術が使われているかを見分ける問題。
① 用語: オーバーライド=子クラスで親と同じメソッドを定義し直す、ポリモーフィズム=同じ呼出しで実際のクラスに応じた処理が動く、オーバーロード=同名で引数が違うメソッド、多重継承=親が複数
② SaleGoodsがgetPriceを定義し直している(オーバーライド)。Goods型の配列でgetPriceを呼ぶと、要素ごとに処理が変わる(ポリモーフィズム)。引数違いの同名メソッドも、親が複数のクラスもない
③ ④
SaleGoodsクラスは、Goodsクラスを継承し、親クラスのgetPriceメソッドと同じシグネチャのメソッドを定義し直している。これはオーバーライドである。また、ShopクラスのcalculateAmountでは、Goods型の配列の各要素に対して、getPrice()を呼び出しており、実際の要素がGoodsかSaleGoodsかによって、呼び出されるメソッドが実行時に切り替わる。これはポリモーフィズム(多態性)である。多重継承やオーバーロード(同名で引数が異なるメソッドの定義)は、このプログラムには使われていない。したがって④が最も適切である。
オーバーライド=サブクラスでの、親クラスのメソッドの再定義。ポリモーフィズム=同じメッセージ(呼出し)に対して、オブジェクトの実際のクラスに応じた処理が実行される。オーバーロード=同名で引数が異なるメソッドの定義。
キーワード: オーバーライド、ポリモーフィズム、継承、オーバーロード、多重継承、Java、オブジェクト指向、情報工学部門
同じ問題が計2回出題されています(平成27年度、平成30年度)。