ポリモーフィズムとは何ですか?

王林
リリース: 2024-08-30 15:43:29
オリジナル
995 人が閲覧しました

ポリモーフィズムは、単一のアクションをさまざまな方法で実行できる概念です。これは、ギリシャ語の 2 つの単語、poly と morphs に由来しています。 「ポリ」は多数を意味し、「モーフ」は形を意味します。今後、ポリモーフィズムにはさまざまな形式が含まれます。オブジェクト指向プログラミングは、クラスまたはデータ型に応じてオブジェクトを異なる方法で処理するプログラミング言語の機能として定義できます。基本的に、これは派生クラスがメソッドを再定義する機能として定義できます。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

理解

ポリモーフィズムには、コンパイル時ポリモーフィズムと実行時ポリモーフィズムの 2 種類があります。コンパイル時の多態性はメソッドのオーバーロードによって実行され、実行時の多態性はメソッドのオーバーライドによって実行されます。動的メソッド ディスパッチとも呼ばれる実行時ポリモーフィズムは、オーバーライドされたメソッドの呼び出しがコンパイル時とは関係なく実行時に解決されるプロセスです。ここで、オーバーライドされたメソッドは、親クラスの参照変数を通じて呼び出されます。また、ランタイムポリモーフィズムはデータメンバーによって実現できません。

ポリモーフィズムによりどのように作業が簡単になるのでしょうか?

これはオブジェクト指向プログラミングの特性です。ポリモーフィズムを使用すると、クラスが共通のインターフェイスを持っている場合でも、クラスは異なる機能を示すことができます。したがって、この長期用語は基本的な概念を説明していると言えます。ポリモーフィズムの注目すべき点は、使用方法が同じであるため、さまざまなクラスで動作するすべてのコードで、使用されているクラスについて知る必要がないことです。

これはオブジェクト指向プログラミングの特性です。ポリモーフィズムを使用すると、クラスが共通のインターフェイスを持っている場合でも、クラスは異なる機能を示すことができます。したがって、この長期用語は非常に基本的な概念を説明していると言えます。注目すべき点は、使用方法が同じであるため、さまざまなクラスのすべての作業コードは、使用されているクラスについて知る必要がないことです。

ポリモーフィズムの現実世界のシナリオを考えてみましょう。ボタンの例を見てみましょう。ある程度の圧力を加えることでボタンをクリックできることはわかっていますが、ボタンを押したときの出力やその使用方法についてはわかりません。ここで注意すべき点は、結果はどちらの方法でも使用方法に影響を与えないということです。

基本的な目標は、ニーズに応じて交換可能なオブジェクトを作成することです。

ポリモーフィズムで何ができるのですか?

子クラスが親クラスで宣言されたメソッドと同じメソッドを持つ場合、それをメソッドのオーバーライドと呼びます。

言い換えると、子クラスがその親クラスが宣言したメソッドの実装を提供する場合、それはメソッドのオーバーライドと呼ばれます。メソッドをオーバーライドする際に覚えておくべき事項は次のとおりです:

  • メソッドの名前は、親クラスで指定されているものと同じである必要があります
  • メソッドには、親クラスで言及されているものと同じパラメータも必要です。
  • 継承、つまり IS-A 関係が存在する必要があります。

ポリモーフィズムを使用しますか?

クラスに、名前は同じでパラメーターが異なる複数のメソッドがある場合、それはメソッドのオーバーロードと呼ばれます。

実行する操作が 1 つだけであると仮定すると、メソッドと同じ名前を付けるとプログラムが読みやすくなります。 Java でメソッドをオーバーロードする方法は次のとおりです。

  • 引数の数の変更
  • データ型の変更

ただし、Javaではメソッドの戻り値の型だけを変更するとそれができません。

メリット

  • プログラマーが、テストおよび実装するために一度作成されたコードとクラスを再利用するのに役立ちます。 (コードの再利用性)
  • 単一の変数名に複数のデータ型 (int、float、double、long など) の変数を格納できます。
  • プログラムの可読性が向上します。

なぜポリモーフィズムを使用する必要があるのですか?

動的ポリモーフィズムと静的ポリモーフィズムとは別に、一部の Java プログラミング特性は、2 つの主要なタイプ以外のポリモーフィズムを示します。

これらは – 強制、ポリモーフィックパラメータ、および演算子のオーバーロードです

強制

非常に簡単な例で強制を理解しましょう。値「coercion class:」を持つ文字列を考えてください。値 1 を持つ別の整数を考えてください。では、文字列値を整数値と連結するとどうなるでしょうか?この連結の出力は「強制クラス: 1」になります。これがいわゆる強制です。暗黙的な型変換は、型エラーを防ぐために行われます。コンパイラがそれを行います。

演算子のオーバーロード

演算子のオーバーロード (メソッドのオーバーロードとも呼ばれます) を始める前に、例を見てみましょう。値が「Operator」である文字列と、「Overloading」である別の文字列を考えてみましょう。 2 つの整数を加算するのと同じように、これら 2 つの文字列にプラス記号 (+) を使用します。 (+) はこれら 2 つの文字列を連結します。 2 つの整数の場合、2 つの整数の合計が返されます。 1 つのシンボルまたは演算子が、使用方法に応じてその意味を変える機能を持つ場合、示されるタイプの多態性は演算子のオーバーロードと呼ばれます。

パラメータ

ポリモーフィズムでは、オブジェクトはさまざまな形で現れることがあります。 Java では、-

のような次のいずれかの方法でオブジェクトへのアクセスを許可することを指します。

1.親クラスまたはスーパークラスの参照変数を使用する

2.存在するクラスの参照変数を使用します。

なぜポリモーフィズムが必要なのでしょうか?

ポリモーフィズムが必要な主な理由は、この概念が継承の実装に広く使用されているためです。これは、同じ外部インターフェイスを共有する際に、オブジェクトがさまざまな内部構造を持つことができるようにする上で重要な役割を果たします。それは多くの人にマッピングされるものであると明確に述べられています。

範囲

バインディングとは、メソッド呼び出しをメソッド本体に接続することです。 2種類のバインディングをご用意しております。

静的バインディング (早期バインディング): オブジェクトのタイプがコンパイル時に決定される場合。

動的バインディング (遅延バインディング): オブジェクトのタイプが実行時に決定される場合。

結論

したがって、これはオブジェクト指向プログラミングの非常に重要な機能の 1 つとみなされます。ポリモーフィズムの実例について話すと、人は同時に異なる特性を持つ可能性があります。たとえば、男性は同時に息子であり、夫であり、従業員でもあります。したがって、同じ人でも状況が異なれば、異なる行動を獲得します。これは、オブジェクト指向の用語ではポリモーフィズムと呼ばれ、オブジェクト指向プログラミングの重要な特性です。

以上がポリモーフィズムとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート