[PHP] 什么是覆盖(Override)?
我今年24岁,是一个新手。
我正在学习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()。已经被覆盖了。
覆写的好处在于,如果我们创建多个子类并准备好覆写的方法,就能应对各种不同的情况。
但是如果进行重写,就会导致同名方法存在多个的情况。这可能会让人感到困惑,当想要调用目标方法时却可能调用了其他方法。但不必担心。不需要进行特殊处理。只需要按照上述方法正常实例化类并关联调用方法即可。
参考文献:金城俊哉的《PHP服务器端编程完全掌握》。