84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
あなたが何と言おうと、この問題は本当に頭の痛い問題です
ビュー 1: ポリモーフィズムの 3 つの要素 1、2、3つまり、オーバーロードはポリモーフィズムではありません
2 を表示:
書籍で言及されている Java 仮想マシン
「オーバーロード」や「リライト」など、ポリモーフィズムの特性の最も基本的な症状のいくつか セクション 8.1これは、オーバーロードとリライトの両方がポリモーフィズムの症状であることを意味します。
各書籍の翻訳は異なります。OverrideであろうとOverloadであろうと、英語の用語を指定するのが最善です。
Overrideはポリモーフィズムの現れです (たとえば、@Override public String toString() {...})、@Override public String toString() {...}),但Overload不是(例如PrintStream.println()和PrintStream.println(String s)Overload
@Override public String toString() {...}
PrintStream.println()
PrintStream.println(String s)
PrintStream.println) ()
実際、中国語の「オーバーロード」に相当する英語には、override、overload、overwrite の 3 つがあります。その後、最後のものが徐々に「rewrite」または「rewrite」に翻訳されました。
オーバーライドとは、同じシグネチャを持つ親クラスの関数を再定義することを指します。この場合、親クラスの関数と子クラスの関数は独立したエンティティです。ただし、呼び出すとき、コンパイラ (またはインタプリタ) は、オブジェクトの実際の型に基づいてどの実装を呼び出すかを決定できます。
オーバーロードは、署名できない同じ関数名の複数の実装を指します。この場合、同じ関数名を異なる種類のパラメータで呼び出して、異なる結果を生成することがよくあります。典型的な例はmax(int, int)和max(double, double)などです。
max(int, int)
max(double, double)
上書きは通常、親クラスの同じシグネチャを持つ関数をサブクラスによって書き換えることです。2 つの関数のシグネチャは同じですが、相互に関係はありません。この場合、親クラスの型はサブクラスのオブジェクトを参照し、呼び出しメソッドは呼び出される親クラスのメソッドです (オーバーライドとの違いに注意してください)
以下に示す上書きと上書きの違いについて
それでは、ポリモーフィズムについて話しましょう。まずポリモーフィズムの定義を見てみましょう:
ポリモーフィズムとは、同じエンティティが同時に複数の形式を持つことを指します。 (Bing ミュージック)
ポリモーフィズムは文字通り「複数の状態」を意味します。オブジェクト指向言語では、インターフェイスの複数の異なる実装をポリモーフィズムと呼びます。 (百度百科)
定義からすると、「オーバーロード」はポリモーフィズムとは何の関係もありませんが、オーバーロードにはインターフェイス、抽象化、仮想関数、テンプレート、ジェネリックスなども含まれます。百科事典からいくつか引用します。
簡単に言うと、「サブクラス型のポインタを親クラス型のポインタに代入することが許可されている」という一文です。ポリモーフィズムは、Object Pascal と C++ の両方の仮想関数を通じて実装されます。 ポリモーフィズム: 同じ操作が異なるオブジェクトに作用し、異なる解釈を持ち、異なる実行結果を生成する可能性があります。実行時に、基本クラスへのポインターを介して派生クラスのメソッドを呼び出すことができます。 C++ では、ポリモーフィズムを実現するための次の方法があります: 仮想関数、抽象クラス、オーバーライド、およびテンプレート (オーバーロードはポリモーフィズムとは関係ありません)。 ポリモーフィズムにより、メソッドに同じ名前を付けることができ、パラメータや戻り値を親の型に渡したり、親の型から返すことができます。
簡単に言うと、「サブクラス型のポインタを親クラス型のポインタに代入することが許可されている」という一文です。ポリモーフィズムは、Object Pascal と C++ の両方の仮想関数を通じて実装されます。
ポリモーフィズム: 同じ操作が異なるオブジェクトに作用し、異なる解釈を持ち、異なる実行結果を生成する可能性があります。実行時に、基本クラスへのポインターを介して派生クラスのメソッドを呼び出すことができます。
C++ では、ポリモーフィズムを実現するための次の方法があります: 仮想関数、抽象クラス、オーバーライド、およびテンプレート (オーバーロードはポリモーフィズムとは関係ありません)。
ポリモーフィズムにより、メソッドに同じ名前を付けることができ、パラメータや戻り値を親の型に渡したり、親の型から返すことができます。
変換エラーが発生する可能性があります。ポリモーフィズムとは、たとえば、サブクラスの子が親クラスの親を継承し、新しいメソッドが子クラスに追加されることを意味します。 。また、Child child1=new Child() を直接使用すると、child1 オブジェクトは保存メソッドとログイン メソッドを呼び出すことができ、Parent child2 = new Child() を使用でき、child2 オブジェクトはログイン メソッドのみを使用できます。したがって、それは文脈に依存します。
各書籍の翻訳は異なります。OverrideであろうとOverloadであろうと、英語の用語を指定するのが最善です。
Overrideはポリモーフィズムの現れです (たとえば、
はそうではありません (たとえば、@Override public String toString() {...}
)、@Override public String toString() {...}
),但Overload不是(例如PrintStream.println()
和PrintStream.println(String s)
OverloadPrintStream.println) ()
およびPrintStream.println(String s)
)。実際、中国語の「オーバーロード」に相当する英語には、override、overload、overwrite の 3 つがあります。その後、最後のものが徐々に「rewrite」または「rewrite」に翻訳されました。
オーバーライドとは、同じシグネチャを持つ親クラスの関数を再定義することを指します。この場合、親クラスの関数と子クラスの関数は独立したエンティティです。ただし、呼び出すとき、コンパイラ (またはインタプリタ) は、オブジェクトの実際の型に基づいてどの実装を呼び出すかを決定できます。
オーバーロードは、署名できない同じ関数名の複数の実装を指します。この場合、同じ関数名を異なる種類のパラメータで呼び出して、異なる結果を生成することがよくあります。典型的な例は
max(int, int)
和max(double, double)
などです。上書きは通常、親クラスの同じシグネチャを持つ関数をサブクラスによって書き換えることです。2 つの関数のシグネチャは同じですが、相互に関係はありません。この場合、親クラスの型はサブクラスのオブジェクトを参照し、呼び出しメソッドは呼び出される親クラスのメソッドです (オーバーライドとの違いに注意してください)
以下に示す上書きと上書きの違いについて
それでは、ポリモーフィズムについて話しましょう。まずポリモーフィズムの定義を見てみましょう:
ポリモーフィズムとは、同じエンティティが同時に複数の形式を持つことを指します。 (Bing ミュージック)
ポリモーフィズムは文字通り「複数の状態」を意味します。オブジェクト指向言語では、インターフェイスの複数の異なる実装をポリモーフィズムと呼びます。 (百度百科)
定義からすると、「オーバーロード」はポリモーフィズムとは何の関係もありませんが、オーバーロードにはインターフェイス、抽象化、仮想関数、テンプレート、ジェネリックスなども含まれます。百科事典からいくつか引用します。
変換エラーが発生する可能性があります。ポリモーフィズムとは、たとえば、サブクラスの子が親クラスの親を継承し、新しいメソッドが子クラスに追加されることを意味します。 。また、Child child1=new Child() を直接使用すると、child1 オブジェクトは保存メソッドとログイン メソッドを呼び出すことができ、Parent child2 = new Child() を使用でき、child2 オブジェクトはログイン メソッドのみを使用できます。したがって、それは文脈に依存します。