本文へスキップ

技術士試験(情報工学部門)・情報技術者試験。ファーストマクロ。


Since 2016.4.19

平成27年度 技術士第一次試験問題【専門科目】

V−23

下記のJavaプログラムにおいて用いられているオブジェクト指向技術の組合せとして、最も適切なものはどれか。

 public class Goods {
  int price;
  string name;
  public int getPrice() {
   return price;
  }
 }


 public class SaleGoods extends Goods {
  public int getPrice() {
   return (int) (price * 0.5);
  }
 }


 public class Shop {
  public int calculateAmount(Goods[] goods) {
   int amount = 0;
   for (int i = 0; i < goods.length; i++) {
    amount = amount + goods[i].getPrice();
   }
   return amount;
  }
 }

@ オーバーライド、オーバーロード、ポリモーフィズム

A オーバーライド、オーバーロード、多重継承

B オーバーライド、ポリモーフィズム

C オーバーライド、ポリモーフィズム、多重継承

D オーバーロード、ポリモーフィズム


類題

H30 V-2


正解

B


解説

オーバーライドは、親クラスで定義されたメソッドなどを、子クラスで再定義して上書きすることである。

オーバーロードは、同じメソッド名で引数の型や数が違うものを定義することである。

ポリモーフィズムは、異なるクラスのメソッドの呼び出し方を共通にする概念である。
 犬のクラスに「鳴け」命令すると「ワン」と鳴き、
 猫のクラスに「鳴け」命令すると「ニャン」と鳴くようなイメージ。

多重継承は、1つのクラスを複数の親クラスから継承して定義することである。

ポリモーフィズム:
goods[i].getPrice() で通常商品 (Goods) とセール商品 (SaleGoods) の価格を求めている。

オーバーライド:
SaleGoods クラスの getPrice が再定義されている。

V−22 目次 V−24