[解決済み] 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()
を使用することで、通常、より読みやすいプリントアウトになります。
関連
-
[解決済み】メソッド本体がない、またはJavaで抽象的な宣言をする
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] 抽象メソッドと仮想メソッドの違いは何ですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】HTTPステータス 405 - リクエストメソッド「POST」はサポートされていません (Spring MVC)
-
[解決済み】Doubleはdereferencedできない?
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み】"|="の意味は何ですか?(パイプ等号演算子)
-
[解決済み】 java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver [重複]。
-
[解決済み] hibernate のプロパティが見つかりません。
-
[解決済み】Eclipseがエラーメッセージ "Java was started but returned exit code = 1" を返す
-
[解決済み】文字列中の � を置換する方法
-
[解決済み】Javaメソッドスタブ
-
[解決済み】Java LinkedListでNodesを使用する