【PHP】关于覆写

,子クラスで親クラスのメソッドを上書きすることはオーバーライドと呼ばれます。

// 親クラス

class Goku {
  public function skill($name, $damage){
    print "名前 = {$name} : ダメージ = {$damage}". '<br>'; 
  }
}

// 子クラス 

class Gohan extends Goku {
  public function skill($name, $damage){
    print "悟飯の必殺技!名前は、{$name}!なんと{$damage}ダメージも敵に与える事ができるんだ!"; 
  }
}

我决定重写子类的skill()方法。在父类中,只显示简洁的信息,这是一种冷漠的方法,但我决定将其重新定义为子类的方法,显示类似于《滚动漫画》的描述信息,这是一种热情的方法。

现在执行该方法。

$dragonball = new Goku();
$dragonball->skill('かめはめ波', '500');
$dragonballZ = new Gohan();
$dragonballZ->skill('かめはめ波', '500');

于是结果是

名前 = かめはめ波 : ダメージ = 500
悟飯の必殺技!名前は、かめはめ波!なんと500ダメージも敵に与える事ができるんだ!

这里是一个示例,第一行是父类的skill()方法,下面的一行是子类的skill()方法。它们被覆盖了。

重写的优点是,通过创建各种子类并准备重写的方法,可以应对各种情况。

但是如果进行覆盖(override)的话,就会导致存在多个同名的方法。这可能会让人感到困惑,当尝试调用目标方法时可能会调用错误的方法。不过不用担心。特别的处理是不必要的。只需要像上面那样正常创建类的实例,并将方法绑定并调用即可。

PHP服务器端编程完美大师的参考文献,作者金城俊哉。

广告
将在 10 秒后关闭
bannerAds