Java におけるポリモーフィズムの概念は、変数が指すことができるオブジェクトの型を指します。これは、変数宣言型のサブクラスです。オブジェクトが作成されると、その型は変更されません。PHP5 では、変数の型は、数値、文字列、オブジェクト、リソースなどを指すことができます。 PHP5 のポリモーフィズムは変数であるとは言えません。
PHP5ではメソッドパラメータの型ヒント位置にポリモーフィズムが適用されているとしか言えません。 クラスのサブクラス オブジェクトは、現在の型を型ヒントとして使用して型要件を満たすことができます。 このインターフェイスを実装するすべてのクラスは、インターフェイスの型を型ヒントとして使用して、メソッドのパラメーター要件を満たすことができます。
簡単に言うと、クラスはその親クラスと実装されたインターフェイスの ID を持ちます。
インターフェイスを実装してポリモーフィズムを実現する
<?php interface User{ // User接口 public function getName(); public function setName($_name); } class NormalUser implements User { // 实现接口的类. private $name; public function getName(){ return $this->name; } public function setName($_name){ $this->name = $_name; } } class UserAdmin{ //操作. public static function ChangeUserName(User $_user,$_userName){ $_user->setName($_userName); } } $normalUser = new NormalUser(); UserAdmin::ChangeUserName($normalUser,"Tom");//这里传入的是 NormalUser的实例. echo $normalUser->getName(); ?>
インターフェイスと合成を使用して複数の継承をシミュレートします
合成を通じて多重継承をシミュレートします。 PHP では多重継承はサポートされていません。コードを再利用するために複数のクラスのメソッドを使用したい場合、何か方法はありますか?
それが合成です。あるクラスで、別のクラスの
属性を設定します。
インターフェースの例概念的な例を書きます。 私たちはオンライン販売システムを設計していますが、ユーザー部分は次のように設計されています。ユーザーはNormalUser、VipUser、InnerUserの3種類に分類されます。ユーザーが購入した製品の価格は、ユーザーのさまざまな割引に基づいて計算する必要があります。また、将来の拡張やメンテナンスのためにスペースを確保しておく必要があります。 りー
以上がPHP ポリモーフィズムを実装する 2 つの方法の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。