コンテンツにスキップ

宿題:OO言語2#

OO言語#宿題2

Homework 約30分 答え

まずは適当なJavaの実行環境を用意せよ.その環境下で次のHomeworkクラスのmain()メソッドを実行し,その出力結果を確認せよ.123という文字が6行得られるはずである.

public class Homework {
    public static void main(String[] args) {
        A aaa = new A();
        B bbb = new B();
        C ccc = new C();
        System.out.println(aaa.x());  // 123
        System.out.println(aaa.y());  // 123
        System.out.println(bbb.x());  // 123
        System.out.println(bbb.y());  // 123
        System.out.println(ccc.x());  // 123
        System.out.println(ccc.y());  // 123
    }
}
class A {
    public String x() { return "123"; }
    public String y() { return "123"; }
}
class B extends A {
    public String x() { return "123"; }
}
class C {
    private A a = new A();
    public String x() { return "123"; }
    public String y() { return a.y(); }
}

Q1.#

出力結果とともに,その出力文字列が最終的にどのクラスのどのメソッドから得られたかを答えよ.例えば,a()b()のような呼び出し系列に対してはb()が答えである.また委譲によって得られた出力結果には「委譲」と一言を添えよ.

Q2.#

次の2項がis-aかhas-aか答えよ.

  • クラスBとクラスA
  • クラスCとクラスA

以下の書式をコピーして回答せよ.

# Q1
123  // クラスAのメソッドx()
123  // クラス?のメソッド?()
123  // クラス?のメソッド?() 委譲
???  // ???

# Q2
B ??? A
C ??? A

回答フォーム

Answer

# Q1
123  // クラスAのメソッドx()
123  // クラスAのメソッドy()
123  // クラスBのメソッドx()
123  // クラスAのメソッドy()
123  // クラスCのメソッドx()
123  // クラスAのメソッドy() 委譲

# Q2
B is a A   // 継承
C has a A  // コンポジション

Q&A#

Q. 誤字#

  • デッキクラスの操作は次の23つを考える.
  • 次の2項がis-ahas-aか答えよ.
  • 実際にisEmpty()メソッド中身このクラスで定義されている(1).
  • Javaには合計4種類のアクセス飾子が存在している.
  • void ensureCapatcity(int)