1. ホーム
  2. java

[解決済み] Java仮想メソッド呼び出しの使い方を教えてください。[クローズド]

2022-02-17 03:14:16

質問内容

javaのメソッド呼び出しとは何かを理解し、それを使った例をたくさん練習しています。

このコンセプトの実際の状況や必要性を知りたいのですが。 実際にどのような場面でこの概念が使われているのか、また、どのような場面でこの概念が使われているのかを教えていただければ幸いです。 もし、このコンセプトがなかったらどうなっていたのでしょうか?

解決方法は?

以下に例を示します。2つのクラスがあるとします。

class A {
    public String getName() {
        return "A";
    }
}

class B extends A {
    public String getName() {
        return "B";
    }
}

今、次のようにすると。

public static void main(String[] args) {
    A myA = new B();
    System.out.println(myA.getName());
}

その結果

B

もし、Javaに virtual method invocation を使用すると、コンパイル時に getName() に属するものが呼び出されます。 A クラスがあります。そうではなく、実行時に myA を指しているため、上記のような結果になります。

[EDITで(少し作為的な)例を追加] 。
この機能を使って、好きな数を受け取るメソッドを書くことができます。 Object を引数にして、このように表示します。

public void printObjects(Object... objects) {
  for (Object o: objects) {
    System.out.println(o.toString());
  }
}

これは、どのようなObjectsの組み合わせに対しても有効です。もしJavaに virtual method invocation すべてのオブジェクトはObjectの toString() これは、あまり読みやすいものではありません。今はその代わりに toString() を使用することで、通常、より読みやすいプリントアウトになります。