PHPを学習すると、PHPのメソッドはオーバーロードできないことがわかります。いわゆるメソッドのオーバーロードとは、同じメソッド名を異なる「パラメータの数」または「アクセスするパラメータの型」が異なることで定義することです。同じメソッド名を持つ異なるメソッド。
12. 新しいメソッドのオーバーロード
PHP を学習すると、いわゆるメソッドのオーバーロードは、「パラメーター」「数値」「パラメーターの型」を通じて同じメソッド名を定義することです。は異なります。異なる名前で同じメソッドにアクセスします。ただし、PHP は弱い型指定言語であるため、メソッドのパラメーターでさまざまな種類のデータを受け取ることができ、PHP メソッドは無限の数のパラメーターを受け取ることができるため、異なる数のパラメーターを渡して呼び出すことはできません。同じメソッド名の異なるメソッドも無効です。したがって、PHP にはメソッドのオーバーロードはありません。オーバーロードすることはできません。つまり、プロジェクト内で同じメソッド名のメソッドを定義することはできません。また、PHP には名前サブスペースの概念がないため、同じページおよびインクルードされたページに同じ名前のメソッドを定義することはできません。また、PHP が提供するメソッドと同じ名前で定義することもできません。同じクラス内に同じ名前のメソッドを定義することはできません。
ここで新しいメソッドをオーバーロードするとはどういう意味ですか?実際、新しいメソッドのオーバーロードと呼ばれるものは、サブクラスが親クラスの既存のメソッドを上書きすることです。では、なぜこれを行うのでしょうか。親クラスのメソッドを継承して直接使用することはできないのでしょうか?ただし、カバーしなければならない状況がいくつかあります。たとえば、前述の例では、人間の「person」に「speak」メソッドがあり、「person」クラスを継承するすべてのサブクラスが Can「speak」です。 、私たちの「Student」
クラスは「person」クラスのサブクラスであるため、「Student」のインスタンスは「話す」ことができますが、人間の「speak
talk」メソッドは次のように述べています。 、そして、「Student」クラスは「person」クラスを拡張し、いくつかの新しい属性を追加します。継承された「say()」スピーキングメソッドを使用する場合は、
「person」クラスから継承された属性を教えていただければと思います。継承された「say()」メソッドを使用して新しく拡張された属性を伝えることはできません。その後、「Student」サブクラスが話すための新しいメソッドを定義するだけで十分ではないかと尋ねる人もいます。サブクラスの属性?抽象的な観点から言えば、「生徒」が 2 つの異なる「話し方」を定義したとしても、目的の「話し方」を実現することはできません。継承されたものは使用される機会がない可能性があり、継承されている場合は削除できません。
今回はカバレッジを使用します。
PHPでは同名のメソッドを定義することはできませんが、親子関係にある2つのクラスでは、サブクラスに親クラスと同じ名前のメソッドを定義することができます
ので、親クラスから継承したメソッドを上書きすることができます。
コードスニペット
コードは次のとおりです:
<?php //定义一个“人”类做为父类 class Person{ //下面是人的成员属性 var $name; //人的名子 var $sex; //人的性别 var $age; //人的年龄 //定义一个 构造方法 参数为属性姓名$name、性别$sex和年龄$age进行赋值 function construct($name, $sex, $age){ $this->name=$name; $this->sex=$sex; $this->age=$age; } //这个人可以说话的方法, 说出自己的属性 function say() { echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."<br>"; } } class Student extends Person { var $school; //学生所在学校的属性 //这个学生学习的方法 function study() { echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>"; } //这个学性可以说话的方法, 说出自己所有的属性,覆盖了父类的同名方法 function say() { echo "我的名子叫:".$this->name." 性别:".$this->sex." 我的年龄是:".$this->age."我在 ".$this->school."上学.<br>"; } } ?>
上記の例では、親クラスから継承した「say()」メソッドを「Student」サブクラスにオーバーライドすることで上書きしています。 「メソッド」が拡張されました。 これで上記の問題は解決しますが、実際の開発では、メソッドは 1 つのコードだけで構成することはできません。このメソッドの元の機能を上書きして保持し、さらに機能を追加したい場合は、元の 100 行のコードを一度書き直して、数行の拡張コードを追加する必要があります。ただし、場合によっては、元のコードが親クラスのメソッドから見えない場合があります。このとき、元のコードをどのように書き換えますか?解決策もあります。つまり、サブクラスのメソッドで、親クラスでオーバーライドされたメソッドを呼び出すことができます。つまり、オーバーライドされたメソッドの元の関数を取得し、独自の関数のいくつかを追加します。サブクラスのメソッドで親クラスのオーバーライドされたメソッドを呼び出す方法は 2 つあります。 1 つは、親クラスの「クラス名::」を使用して、親クラスのオーバーライドされたメソッドを呼び出す方法です。 "parent:" :" 親クラスでオーバーライドされたメソッドを呼び出すメソッド;
コード スニペット
コードは次のとおりです:
class Student extends Person{ var $school; //学生所在学校的属性 //这个学生学习的方法 function study() { echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>"; } //这个学性可以说话的方法, 说出自己所有的属性,覆盖了父类的同名方法 function say() { //使用父类的“类名::“来调用父类中被覆盖的方法; // Person::say(); //或者使用“parent::”的方试来调用父类中被覆盖的方法; parent::say(); //加上一点自己的功能 echo “我的年龄是:".$this->age."我在".$this->school."上学.<br>"; } }
さて、親クラスでオーバーライドされたメソッドにアクセスするには 2 つの方法があります。私たちは何を選ぶのですか?ユーザーは次のことを行うことができます
会发现自己写的代码访问了父类的变量和函数。如果子类非常精炼或者父类非常专业化的时
候尤其是这样。不要用代码中父类文字上的名字,应该用特殊的名字parent,它指的就是子
类在extends 声明中所指的父类的名字。这样做可以避免在多个地方使用父类的名字。如果继
承树在实现的过程中要修改,只要简单地修改类中extends 声明的部分。
同样,构造方法在子类中如果没有声明的话,也可以使用父类中的构造方法,如果子类
中重新定义了一个构造方法也会覆盖掉父类中的构造方法,如果想使用新的构造方法为所有
属性赋值也可以用同样的方式。
代码片段
代码如下:
class Student extends Person{ var $school; //学生所在学校的属性 function construct($name, $sex, $age, $school){ //使用父类中的方法为原有的属性赋值 parent::construct($name, $sex, $age); $this->school=$school; } //这个学生学习的方法 function study() { echo "我的名子叫:".$this->name." 我正在”.$this->school.”学习<br>"; } //这个人可以说话的方法, 说出自己的属性 function say() { parent::say(); //加上一点自己的功能 echo “我的年龄是:".$this->age."我在".$this->school."上学.<br>";
以上がPHP オブジェクト指向オーバーロードの新しいメソッド インスタンスの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\ \;||\xc2\xa0)/","其他字符",$str)”语句。

php判断有没有小数点的方法:1、使用“strpos(数字字符串,'.')”语法,如果返回小数点在字符串中第一次出现的位置,则有小数点;2、使用“strrpos(数字字符串,'.')”语句,如果返回小数点在字符串中最后一次出现的位置,则有。

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

在PHP中,可以利用implode()函数的第一个参数来设置没有分隔符,该函数的第一个参数用于规定数组元素之间放置的内容,默认是空字符串,也可将第一个参数设置为空,语法为“implode(数组)”或者“implode("",数组)”。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版
ビジュアル Web 開発ツール
