码迷,mamicode.com
首页 > Web开发 > 详细

PHP 方法重写override 与 抽象方法的实现之间的关系

时间:2015-09-13 23:14:19      阅读:547      评论:0      收藏:0      [点我收藏+]

标签:

重写由final关键字决定,但受父类的访问权限限制

实现基于继承,所以实现父类的抽象方法必须可访问到,父类抽象方法不可为private

1、父类某方法能否被子类重写与此方法的访问级别无关

public protected private对某方法内否被重写没有影响,能否被重写要看此方法是否被final修饰(final类不可被继承,final方法不可被重写)

2、但重写方法要受到访问级别的限制,即访问权限不可提升规定

(不仅仅是PHP,其他面向对象语言依然适用),访问权限只可以降低,不可以提升。

3、PHP重写父类方法时需要保持参数一致

虽然在 PHP 5.2 及以前没有此限制但我们还是以最高标准为原则,这也是风险控制的良好习惯,PHP并不会像C/C++一样在子类与父类方法名相同参数不一致时认为是对此方法的 多态重载,PHP没有直接的重载机制,所以必须保持方法名相同参数相同

4、重写不等于  现  

实现是抽方法声明或者接口方法声明实现的场景,实现是继承关系,继承某抽象类or接口实现其方法,受访问权限的制约

重写并不需要访问到,重写是远远的站在子类中看父类的某个方法做一个自己的方法,不需要触碰到;实现则不同,实现属于继承,需访问到,这就是抽象方法不可被声明为private,接口比较特殊,必须为public的原因

不要与抽象类中的抽象方法或者接口中的接口方法混淆,抽象方法和接口中的方法皆为方法声明,我们在子类继承于此抽象类或接口中对其实现,此为继承关系,你给我,我才可以去实现,所以抽象方法不可用private修饰,不然子类拿不到,而抽象方法又必须被子类继承实现,死锁了。



PHP 方法重写override 与 抽象方法的实现之间的关系

标签:

原文地址:http://my.oschina.net/sallency/blog/505641

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!