継承、ポリモーフィズム、インターフェイス: PHP の 3 つの主要なオブジェクト指向機能
PHP は、PHP5 以降、オブジェクト指向プログラミング (OOP) をサポートするサーバー側プログラミング言語です。 OOP の中心的な考え方は、データと動作をオブジェクトにカプセル化して、プログラムの保守性とスケーラビリティを向上させることです。 PHP のオブジェクト指向プログラミングには、継承、ポリモーフィズム、インターフェイスという 3 つの大きな特徴があります。
1. 継承
継承とは、あるクラスが別のクラスからプロパティとメソッドを継承できることを意味します。継承されたクラスは親クラスまたは基本クラスと呼ばれ、継承されたクラスはサブクラスまたは派生クラスと呼ばれます。サブクラスは親クラスのプロパティとメソッドを継承し、それらをオーバーライドまたは拡張できます。
たとえば、属性 $name と $color、メソッド Eat() および sleep() を持つ動物クラス Animal を定義できます。次に、Animal クラスから継承して bark() メソッドを追加する犬クラス Dog を定義できます。
class Animal { protected $name; protected $color; public function eat() { echo "$this->name is eating. "; } public function sleep() { echo "$this->name is sleeping. "; } } class Dog extends Animal { public function bark() { echo "$this->name is barking. "; } } $dog = new Dog(); $dog->name = "Fido"; $dog->color = "brown"; $dog->eat(); // 输出: Fido is eating. $dog->sleep(); // 输出: Fido is sleeping. $dog->bark(); // 输出: Fido is barking.
親クラスでは、キーワード protected を使用して属性 $name と $ を定義していることに注意してください。色。これは、親クラスと子クラス内でのみアクセスでき、クラス外からは直接アクセスできないことを意味します。サブクラスでは、キーワード public を使用して bark() メソッドを定義しました。これは、クラスの内部と外部の両方からアクセスできることを意味します。
2. ポリモーフィズム
ポリモーフィズムとは、オブジェクトが複数の形式で現れる可能性があることを意味します。オブジェクト指向プログラミングでは、ポリモーフィズムとは、プログラムの正確さに影響を与えることなく、サブクラスが親クラスを置き換えることができることを意味します。
たとえば、動物の情報を表示する show($animal) メソッドを持つ動物園クラス Zoo を定義できます。これで、さまざまな動物オブジェクトを show() メソッドに渡してポリモーフィズムを実現できるようになりました。
class Zoo { public function show($animal) { $animal->eat(); $animal->sleep(); } } $dog = new Dog(); $dog->name = "Fido"; $dog->color = "brown"; $cat = new Cat(); $cat->name = "Fluffy"; $cat->color = "white"; $zoo = new Zoo(); $zoo->show($dog); // 输出: Fido is eating. Fido is sleeping. $zoo->show($cat); // 输出: Fluffy is eating. Fluffy is sleeping.
この例では、Animal クラスを継承し、eat () メソッドをオーバーライドする新しい猫クラス Cat を追加しました。犬と猫のオブジェクトを show() メソッドに渡すことができます。これらは両方とも Animal クラスのサブクラスであるため、多態性を実現できます。
3. インターフェイス
インターフェイスは、一連のメソッドを定義する仕様ですが、特定の実装はありません。 PHP では、クラスは特定の機能要件を満たすために 1 つ以上のインターフェイスを実装できます。
たとえば、動物の鳴き声を出力するための speech() メソッドを持つインターフェイス Speakable を定義できます。次に、犬クラスと猫クラスにこのインターフェイスを実装させます。
interface Speakable { public function speak(); } class Dog extends Animal implements Speakable { public function bark() { echo "$this->name is barking. "; } public function speak() { $this->bark(); } } class Cat extends Animal implements Speakable { public function meow() { echo "$this->name is meowing. "; } public function speak() { $this->meow(); } } $dog = new Dog(); $dog->name = "Fido"; $dog->color = "brown"; $dog->speak(); // 输出: Fido is barking. $cat = new Cat(); $cat->name = "Fluffy"; $cat->color = "white"; $cat->speak(); // 输出: Fluffy is meowing.
この例では、speak() メソッドを持つ Speakable インターフェイスを定義します。次に、Dog クラスと Cat クラスにこのインターフェイスを実装させ、speak() メソッドをそれぞれ実装させます。このようにして、犬と猫のオブジェクトの特定の実装を知らなくても、それらのオブジェクトで speech() メソッドを呼び出すことができます。
継承、ポリモーフィズム、インターフェイスは、PHP オブジェクト指向プログラミングの 3 つの主要な機能です。これらにより、コードをより適切に整理および管理し、コードの再利用性とスケーラビリティを向上させることができます。これらの機能を理解すると、PHP のオブジェクト指向プログラミング モデルをより深く理解できるようになります。
以上が継承、ポリモーフィズム、インターフェイス: PHP の 3 つの主要なオブジェクト指向機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











関数の継承では、「基底クラス ポインター」と「派生クラス ポインター」を使用して継承メカニズムを理解します。基底クラス ポインターが派生クラス オブジェクトを指す場合、上方変換が実行され、基底クラスのメンバーのみにアクセスされます。派生クラス ポインターが基本クラス オブジェクトを指す場合、下向きキャストが実行される (安全ではない) ため、注意して使用する必要があります。

パソコンを組み立てる際、設置作業は簡単ですが、誤ってCPUラジエーターの電源線をSYS_FANに差し込んでしまうなど、配線に問題が発生することが多く、ファンは回転しますが、ファンが回転しない場合があります。コンピュータの電源がオンになると、F1 エラー「CPUFanError」が発生し、CPU クーラーがインテリジェントに速度を調整できなくなります。コンピューターのマザーボード上の CPU_FAN、SYS_FAN、CHA_FAN、および CPU_OPT インターフェイスに関する一般的な知識を共有しましょう。コンピュータのマザーボード上の CPU_FAN、SYS_FAN、CHA_FAN、および CPU_OPT インターフェイスに関する一般科学 1. CPU_FANCPU_FAN は、CPU ラジエーター専用のインターフェイスであり、12V で動作します。

最新の効率的なプログラミング言語である Go 言語には、開発者が高品質で保守可能なコードを作成するのに役立つ豊富なプログラミング パラダイムと設計パターンがあります。この記事では、Go 言語の一般的なプログラミング パラダイムと設計パターンを紹介し、具体的なコード例を示します。 1. オブジェクト指向プログラミング Go 言語では、構造体とメソッドを使用してオブジェクト指向プログラミングを実装できます。構造を定義し、その構造にメソッドをバインドすることにより、データのカプセル化と動作バインディングのオブジェクト指向機能を実現できます。パッケージマイニ

仮想基本クラスは、追加の vtable を作成せずに複数の基本クラスからの継承を許可することで、vtable のメモリ オーバーヘッドを最適化します。最適化されたコードでは、形状基本クラスに仮想関数テーブルがなくなり、円クラスと長方形クラスが同じ仮想関数テーブルを共有するため、メモリ消費量が削減されます。

継承エラーのデバッグのヒント: 正しい継承関係を確認します。デバッガーを使用してコードをステップ実行し、変数値を調べます。仮想修飾子を正しく使用してください。隠れた相続によって引き起こされる相続ダイアモンド問題を調べてください。抽象クラスに実装されていない純粋仮想関数がないか確認します。

PHP インターフェースの概要とその定義方法 PHP は、Web 開発で広く使用されているオープンソースのスクリプト言語であり、柔軟性があり、シンプルで強力です。 PHP では、インターフェイスは複数のクラス間で共通のメソッドを定義し、ポリモーフィズムを実現し、コードをより柔軟で再利用可能にするツールです。この記事では、PHP インターフェイスの概念とその定義方法を紹介し、その使用法を示す具体的なコード例を示します。 1. PHP インターフェイスの概念 インターフェイスはオブジェクト指向プログラミングにおいて重要な役割を果たし、クラス アプリケーションを定義します。

C++の関数継承を詳しく解説:「is-a」と「has-a」の関係をマスターしよう 関数継承とは?関数の継承は、派生クラスで定義されたメソッドを基本クラスで定義されたメソッドに関連付ける C++ の手法です。これにより、派生クラスが基本クラスのメソッドにアクセスしてオーバーライドできるようになり、基本クラスの機能が拡張されます。 「is-a」および「has-a」関係 関数継承では、「is-a」関係は、派生クラスが基本クラスのサブタイプであること、つまり、派生クラスが基本クラスの特性と動作を「継承」することを意味します。基本クラス。 「has-a」関係は、派生クラスに基本クラス オブジェクトへの参照またはポインターが含まれていること、つまり、派生クラスが基本クラス オブジェクトを「所有」していることを意味します。構文関数継承を実装する方法の構文は次のとおりです: classDerivedClass:pu

インターフェイスと抽象クラスは、分離と拡張性のためにデザイン パターンで使用されます。インターフェイスはメソッド シグネチャを定義し、抽象クラスは部分的な実装を提供し、サブクラスは未実装のメソッドを実装する必要があります。ストラテジ パターンでは、インターフェイスを使用してアルゴリズムを定義し、抽象クラスまたは具象クラスが実装を提供するため、アルゴリズムを動的に切り替えることができます。オブザーバー パターンでは、インターフェイスを使用してオブザーバーの動作を定義し、抽象クラスまたは具象クラスを使用して通知をサブスクライブおよびパブリッシュします。アダプター パターンでは、インターフェイスを使用して既存のクラスを適応させることができ、互換性のあるインターフェイスを実装できるため、元のコードとの対話が可能になります。
