ホームページ php教程 php手册 メソッドのオーバーロード(書き換え)/メソッドカバレッジ、マジック関数の実装

メソッドのオーバーロード(書き換え)/メソッドカバレッジ、マジック関数の実装

Oct 24, 2016 am 12:00 AM


メソッドのオーバーロード
関数名が異なります。関数の数やパラメータの型が異なるため、同じ関数名を呼び出すことができますが、異なる関数を区別できます
class A{
public function test1(){
echo "test1" ;}
public function test1($a){
echo "test1 haha​​";}
}


オーバーロード
$a=newA();
$a->test1();
$a->test1(222);

上記の使用法は間違っています

マジック関数メソッドのオーバーロード実装

class A{
public function test1($p){
echo "1つのパラメータを受け入れる";}
public function test1($p){
echo "2つのパラメータを受け入れる";}
}
は__call
__callを提供しますメソッドを呼び出すオブジェクトで、そのメソッドが存在しない場合、システムは自動的に __call
function __call($method,$p){

を呼び出します

var_dump($p);
if($method=="test1"){
if(count($p)==1){
$this->test1($p);
}else if(count ($p)==2){
$this->test2($p);
}
}
}

$a=newA();
$a->テスト(1);
$a->テスト(1,2);


マジック関数
__set、__get、__construct、__destruct、__call、__isset、__unset

__LINE__ 出力行数
、__FILE__ 出力ファイル名
、__DIR__、
__CLASS__ 出力クラス名


メソッド書き換え/メソッド上書き(オーバーロード)

class Animal{
public $name;
protected $price;
function cry(){
echo "わからない";}

}
クラス Dog extends Animal{
//オーバーライド
function cry(){
echo "puppy";}
}
class Pig extends Animal{
//override
function cry(){
echo "pig" ;}
}

$dog1=新しい犬();
$dog1->泣き();
$pig=1新しい豚();
$pig1->泣き();
?>

書き換えについて:
すべてのサブクラスにメソッドがあることが親クラスでわかっているが、そのメソッドの書き方がわからない場合、サブクラスにこのメソッドをオーバーライドさせることができます
1. 書き換えを実装するには、サブクラスの名前が必要です。そのメソッドのメソッドはパラメーター リストとまったく同じですが、パラメーター名が同じである必要はありません
2. サブクラスが親クラス (public/protected) のメソッドを呼び出す必要がある場合は、parent:: メソッドを使用できます。名前 (パラメータ...)、親クラス名:: メソッド名 (パラメータ...)
3. メソッド カバレッジを実装する場合、アクセス修飾子は異なっていてもかまいませんが、サブクラスのアクセス スコープ >= アクセスを満たす必要があります。親クラスのスコープ


ポリモーフィズムはどこに反映されますか?
サブクラスが親クラスのメソッドをオーバーライドしない場合、$call->cry() は親クラスを呼び出します。 )

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)