php类办法重写准则有:一、final润饰的类办法不成以被子类重写;二、php能否重写父类办法只会依据办法名能否分歧判别;三、正在重写时,拜访级别只能够等于或许宽松于父类,不成以晋升拜访级别。
PHP类办法重写规定:
(保举教程:php教程)
一、final润饰的类办法不成被子类重写
final润饰的类办法不成被子类重写,即使final private办法无奈被承继,子类仍不克不及对其进行重写。
class FinalMethod { //可承继不成重写 final public function finalPublic() { echo "can be inherited, but be overrided"; } //可承继不成重写 final protected function finalProtected() { echo "can be inherited, but be overrided"; } //不成承继不成重写 尽管子类承继没有到父类的private办法 但同时也会被final限度无奈重写 final private function finalPrivate() { echo "can not be inherited or be overrided"; } //尽管不成承继 但子类里可重写此办法 private function private() { echo "can not be inherited ,but be overrided"; } } class Override extends FinalMethod { //error public function finalPublic() { } //error protected function finalProtected() { } //error private function finalPrivate() { } //correct public/protected/private function private() { //子类承继父类重写父类办法时拜访级别只能愈加宽松 不成更为严格 } }
二、PHP能否重写父类办法只会依据办法名能否分歧判别(5.3当前重写父类办法参数个数必需分歧)
这里并非说办法参数无任何作用,PHP无重载机制,以是判别是否是重写只会经过办法名(C/C++不只要办法名相反,参数也相反时才被视为重写,不然即为重载,即新界说了一个多态函数的态)。
当办法名相反时,即被以为是正在重写父类办法,5.2能够参数没有同,5.3当前参数需以及父类办法分歧,且都追随承继拜访级此外规定。
class Father { public function index($args_1) { } } class Child extends Father { //5.3当前重写办法必需与父类放弃参数个数相反 public function index($args_1, $args_2) { //正在C/C++中此为重载非重写,由于C/C++具备规范的多态机制,会因参数没有同而视为某一办法的另外一种态 //but正在php中此仍然为重写 但5.3当前此为合法 必需与父类的办法参数个数放弃分歧 } //5.3当前重写办法必需与父类放弃参数个数相反 private function index($args_1, $args_2) { //C/C++会由于参数没有同于父类办法而视为重载,即新界说了一个函数的态,以是没有会遭到承继拜访权限的限度 //但php依然会被视为对父类办法的重写,会遭到承继拜访权限的起落规定限度 } }
三、重写时拜访级别只能够等于或许宽松于父类,不成晋升拜访级别
父类的public办法不克不及被子类重写为protected或许private,protected办法不克不及被重写为private。
class Father { public function index() { } } class Child extends Father { protected/private function index() { //拜访权限晋升 谬误 //父类为public 则子类重写也只能为public //父类为protected 则子类可为public/protected //父类为private 则子类public/protected/private皆可 } }
以上就是php类办法重写准则有哪些的具体内容,更多请存眷资源魔其它相干文章!
标签: php php教程 php故障解决 php使用问题 类方法 重写
抱歉,评论功能暂时关闭!