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