私は15/30点しか正しくないと言って宿題を取り戻しましたが、どの質問が間違っているのか、それが間違っているのかについての説明はありませんでした。私は試験が来ていると私はそれを取る前にこれを理解したいと思います。私は誰かが私が正しい/間違っていることを理解するのを助けることができると期待していたのですか?なぜ?だからここ静的/動的タイプとVtableの明確化が必要
は私の割り当てた:
は、次のJavaプログラムを考えてみましょう:
public class Base {
public void m(Object o) { System.out.println("Base.m(Object)"); }
public static void m(String s) { System.out.println("Base.m(String)"); }
public void m(Class c) { System.out.println("Base.m(Class)"); }
}
public class Derived extends Base {
public void m(Object o) { System.out.println("Derived.m(Object)"); }
public static void m(String s) { System.out.println("Derived.m(String)"); }
public static void main(String[] args) {
Base b = new Derived();
b.m(new Object());
b.m(new Integer(5));
b.m("Hello");
b.m(b.getClass());
}
}
質問1(5ポイント):Derived.main中のBの静的な型が(何が) ?
私の答え:ベース
質問2(5ポイント):Derived.main中のBのダイナミック型は()とは何ですか?
私の答え:派生
問3(20ポイント):私たちの 翻訳者のための派生のvtableで正しい順序エントリは何ですか? classname.methodname(typename) "表記を使用してください。 また、最初のエントリ(__isa)は無視してください。私はBase.m(文字列sの印象の下だ派生のvtable-
- Derived.m(オブジェクト)
- Base.m(クラス)
:
私の答え)とDerived.m(String s)はどちらも静的メソッドです。したがって、vtableには含まれません。また、Derived.m(Object)がBase.m(Object)の代わりに使用されると仮定し、DerivedのVtableには含まれないと仮定しました。
コンパイラーが多態性をどのように実装しているかを知るにはどのようなテストが必要ですか? –
オブジェクト指向プログラミングに関するドイツの狂った教授の最終試験。彼はファイナルのすべての質問にそれにスタートレックのテーマがあると言いました。私は昨年のハリー・ポッター・テーマ試験最終試験を見ていて、私は自分自身を撃ちたい。私は、ハリー・ポッターとすべての人が好きですが、息子のスター・トレックはいいですか? – user1098887