仮想関数オーバーロードとポリモーフィズムのニーズを満たすために、定義が空であっても、基本クラスの関数をサブクラスで書き換えることができます。
純粋な仮想関数は基本クラスでは定義されず、Java のインターフェイス関数と同様に、サブクラスで実装する必要があります。 仮想関数 導入の理由: 多態性機能の使用を容易にするために、多くの場合、基本クラスで仮想関数を定義する必要があります。 この仮想関数をphp5で実装するにはどうすればよいですか?以下のコードを見てください:
<?php class A { public function x() { echo "A::x() was called.\n"; } public function y() { self::x(); echo "A::y() was called.\n"; } public function z() { $this->x(); echo "A::z() was called.\n"; } } class B extends A { public function x() { echo "B::x() was called.\n"; } } $b = new B(); $b->y(); echo "--\n"; $b->z(); ?>
上記の例の結果は次のとおりです:
A::x() was called. A::y() was called. -- B::x() was called. A::z() was called.
virtual-function.php
<?php class ParentClass { static public function say( $str ) { static::do_print( $str ); } static public function do_print( $str ) { echo "<p>Parent says $str</p>"; } } class ChildClass extends ParentClass { static public function do_print( $str ) { echo "<p>Child says $str</p>"; } } class AnotherChildClass extends ParentClass { static public function do_print( $str ) { echo "<p>AnotherChild says $str</p>"; } } echo phpversion(); $a=new ChildClass(); $a->say( 'Hello' ); $b=new AnotherChildClass(); $b->say( 'Hello' );
以上がPHPで仮想関数を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。