オーバーライドは、PHP のクラス、オブジェクト、カプセル化、ポリモーフィズム、オーバーロードなどの概念に似たオブジェクト指向プログラミングの概念です。関数とクラスのオーバーライドは、基本クラスまたは親クラスのメソッドと同じ派生クラスのメソッドが作成されるときに行われます。これらのメソッドはどちらも同じ名前と同じ数の引数を持ちます。
広告 このカテゴリーの人気コース PHP 開発者 - 専門分野 | 8コースシリーズ | 3 つの模擬テスト無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
PHP でオーバーライドがどのように機能するかを見てみましょう。
メソッドのオーバーライドの例を以下に示します。
コード:
class BaseClass { public function ABC() { echo "<br /> In the base class"; } } class DerivedClass extends BaseClass { // override the method ABC() of base class public function ABC() { echo "<br />In the derived class"; } } $obj1 = new BaseClass; $obj1->ABC(); $obj2 = new DerivedClass; $obj2->ABC();
出力:
アクセス修飾子は 3 つあります。
ご存知のとおり、保護されたメソッドは基本クラスと派生クラスからアクセスできます。サブクラスではパブリックにできますが、プライベートは親クラスでのみアクセスできるため、プライベートにすることはできません。また、クラスメソッドのアクセス指定子が public である場合、派生クラスのオーバーライドメソッドを private および protected として宣言することはできません
アクセス修飾子を使用したオーバーライドの例を以下に示します。
コード:
class BaseClass { private function ABC() { echo "<br/>In the base class Method : ABC"; } protected function XYZ() { echo "<br/>In the base class Method : XYZ"; } } class DerivedClass extends BaseClass { // overriding with public for wider accessibility public function ABC() { echo "<br/> In the derived class Method : ABC"; } // overriding method // with more accessibility public function XYZ() { echo "<br/>In the derived class Method : XYZ"; } } //$obj1 = new BaseClass; //$obj1->ABC(); //throws fatal error //$obj1->XYZ(); //throws fatal error $obj2 = new DerivedClass; $obj2->ABC(); $obj2->XYZ();
出力:
最後のキーワードはクラスとメソッドに使用されます。オーバーライドできるのは変数ではなくメソッドとクラスです。
メソッドまたはクラスがfinalとして宣言されている場合、そのメソッドまたはクラスのオーバーライドは実行できず、クラスでの継承も不可能です。
final キーワードを使用したオーバーライドの例を以下に示します。
コード:
class BaseClass { // Final method – display // this cannot be overridden in base class final function display() { echo "<br /> In the Base class display function"; } /// method - ABC function ABC() { echo "<br /> In the Base cLass ABC function"; } } class DerivedClass extends BaseClass { function ABC() { echo "<br /> In the Derived class ABC function"; } } $obj1 = new DerivedClass; $obj1->display(); $obj1->ABC();
出力:
A class declared as final cannot be inherited. A Final Class further have final method along with other methods. But since the class itself is declared final there is no use of declaring a final method in a final class.
The example of class overriding using final keyword is written below.
Code:
// class declared as final cannot be overridden final class BaseClass { // method - ABC function ABC() { echo "<br> In the BaseClass Method ABC function"; } // Final method - display function display() { echo "<br> In the BaseClass Method display function"; } } // here you cannot extend the base class // as the base class is declared as final $obj1 = new BaseClass; $obj1->display(); $obj1->ABC();
Output:
以上がPHP でのオーバーライドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。