目次
サブクラスが親クラスのメソッドをオーバーライドする場合、サブクラスでオーバーライドされたメソッドのアクセス許可は変更できないことに注意してください。親クラスのオーバーライドされたメソッドよりも低いアクセス権。たとえば、親クラスのメソッドのアクセス許可が保護されている場合、サブクラスでオーバーライドされるメソッドのアクセス許可は保護またはパブリックにする必要があります。親クラスのメソッドにパブリック権限がある場合、サブクラスでオーバーライドされるメソッドはパブリックのみとなります。つまり、サブクラスで親クラスのメソッドをオーバーライドする場合、そのメソッドには、親クラスのオーバーライドされたメソッドよりも高いアクセス許可が必要です。 " >メソッドとアクセス許可の書き換え サブクラスが親クラスのメソッドをオーバーライドする場合、サブクラスでオーバーライドされたメソッドのアクセス許可は変更できないことに注意してください。親クラスのオーバーライドされたメソッドよりも低いアクセス権。たとえば、親クラスのメソッドのアクセス許可が保護されている場合、サブクラスでオーバーライドされるメソッドのアクセス許可は保護またはパブリックにする必要があります。親クラスのメソッドにパブリック権限がある場合、サブクラスでオーバーライドされるメソッドはパブリックのみとなります。つまり、サブクラスで親クラスのメソッドをオーバーライドする場合、そのメソッドには、親クラスのオーバーライドされたメソッドよりも高いアクセス許可が必要です。
サブクラスは、親クラスとは異なる数のパラメータを持つことができます。たとえば、以下の" >オーバーライド時のパラメータの数 サブクラスは、親クラスとは異なる数のパラメータを持つことができます。たとえば、以下の
ホームページ バックエンド開発 PHPチュートリアル PHP オブジェクト指向 - 親クラスを拡張するサブクラスのサンプルコード共有 (親クラスをリロードするサブクラス)

PHP オブジェクト指向 - 親クラスを拡張するサブクラスのサンプルコード共有 (親クラスをリロードするサブクラス)

Mar 25, 2017 am 10:00 AM

PHPでは、サブクラスが親クラスを継承するが、親クラスの属性やメソッドをある程度拡張する必要がある状況に遭遇します。このとき、サブクラスは再実行できます。ただし、親クラスのメソッドに数百行または数千行のコードが含まれている場合は、属性とメソッドを上書きするだけで済みます。 "parent class name::method" または "parent::method" を使用して、親クラスでオーバーライドされたメソッドを呼び出します。親クラスをリロードするための があり、その後、拡張する必要があるステートメント。

メソッドの書き換え
<?php
 class Person{
       public $name;       
       public function construct($name="" ){         
               $this->name=$name;                                             
        }        public  function say(){
             echo "我叫".$this->name  ;  
        } 

}?><?php
     class Student extends Person{
          public $name;               

          public function construct($name=""){
               $this->name =$name;
          }//这里定义了一个和父类中同名的方法,将父类中的说话方法覆盖并重写
    public  function say(){
             echo "我叫".$this->name .",今年25岁了" ;  
    } 
}?>
ログイン後にコピー

メソッドとアクセス許可の書き換え サブクラスが親クラスのメソッドをオーバーライドする場合、サブクラスでオーバーライドされたメソッドのアクセス許可は変更できないことに注意してください。親クラスのオーバーライドされたメソッドよりも低いアクセス権。たとえば、親クラスのメソッドのアクセス許可が保護されている場合、サブクラスでオーバーライドされるメソッドのアクセス許可は保護またはパブリックにする必要があります。親クラスのメソッドにパブリック権限がある場合、サブクラスでオーバーライドされるメソッドはパブリックのみとなります。つまり、サブクラスで親クラスのメソッドをオーバーライドする場合、そのメソッドには、親クラスのオーバーライドされたメソッドよりも高いアクセス許可が必要です。

オーバーライド時のパラメータの数 サブクラスは、親クラスとは異なる数のパラメータを持つことができます。たとえば、以下の

コンストラクターメソッド

では、追加のパラメータ $age が追加されます。

上記の例では、「メソッド」をオーバーライドすることで拡張を実現しています。

ただし、こうすることで上で述べた問題は解決しますが、実際の開発では、メソッドは 1 つのコードだけでも複数のコードでも構いません。たとえば、「person」クラスの「say()」メソッドには 100 行あります。このメソッドを上書きして、元の機能ともう少し追加の機能を保持したい場合は、元の 100 行のコードと、いくつかの拡張されたコードを書き直す必要がありますが、これは場合によっては非常に適切です。 、親クラスのメソッドは元のコードを参照できません。このとき、元のコードをどのように書き換えますか?解決策もあります。つまり、サブクラス メソッドで、親クラスでオーバーライドされたメソッドを呼び出すことができます。つまり、オーバーライドされたメソッドの元の関数を取得し、独自の関数の一部を追加することができます。親クラスのオーバーライドされたメソッドを呼び出すメソッドをサブクラスのメソッドに実装します:


1つは親クラスの「クラス名::」を使用して親クラスのオーバーライドされたメソッドを呼び出す方法です。 "parent::" を使用することです。親クラスでオーバーライドされたメソッドを呼び出してみます



メソッドの拡張

<?phpclass Student extends Person{

    public $name;    
    public $age;                                 

    public function construct($name="",$age=25){

        parent::construct($name,$age);        $this->age =$age;

    }    public  function say(){

        parent::say();        echo ",今年".$this->age."岁了" ;  

    } 

}?>
ログイン後にコピー
上記の内容は、単に属性とメソッドを

リロードするだけです

本当の意味での親クラスオーバーロードではなく、サブクラスが親クラスを拡張することとしか言えません。PHPにもオーバーロードという言葉がありますが、一般的な言語指向の言語とは意味が異なります。

以上がPHP オブジェクト指向 - 親クラスを拡張するサブクラスのサンプルコード共有 (親クラスをリロードするサブクラス)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP データベースの操作 CakePHP データベースの操作 Sep 10, 2024 pm 05:25 PM

CakePHP でデータベースを操作するのは非常に簡単です。この章では、CRUD (作成、読み取り、更新、削除) 操作について理解します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles