【发布时间】:2012-07-26 21:47:28
【问题描述】:
我可以在子类中重写一个PHP方法,改变签名中的参数,如下所示。
class theParent {
function myMethod($param1) {
// code here
}
}
class theChild extends theParent {
function myMethod($param1, $param2) {
// code here
}
}
我对此进行了测试,它工作正常,不会引发任何错误。我的问题是,这是不好的形式吗?还是 OOP 的基本原则?
如果父方法被声明为抽象,则子签名不能偏离。如果您需要强制执行接口的该方面,大概这是使用的机制?
【问题讨论】:
-
那个子类不是第一类的子类。更不用说它是无效的语法......
-
它被称为覆盖。如果要防止子类覆盖方法,请使用 final 关键字。