php面向对象 之 多态--重写覆盖
2014-12-11 10:35
253 查看
<?php class a { function cry() { echo'你哭了'; } } class b extends a { function cry() { echo'你妹的'; } } $a=new b(); $a->cry(); ?>
这里 子类class b 继承了 父类class a;
但是相对的 class b中 有一个cry 方法 所有 这里b实例化后 会优先调用 class b的cry 所以会输出 你妹的;
还有 如果class b要实现覆盖 必须 方法名和传递的参数必须一致 如下 cry里传递了 参数这样便会报错了
<?php
class a
{
function cry()
{
echo'你哭了';
}
}
class b extends a
{
function cry($a)
{
echo'你妹的';
}
}
$a=new b();
$a->cry();
?>此时 class b中 方法便被改变掉了 默认不会和父类 class a中的覆盖 但是 又由于 class b中 已经继承了 class a所以 class b 里面会出现两个名称一样的方法
即 cry();cry($a) 同一个类中出现两个相同的方法 所以会报错;
(ps【如果子类想覆盖父类的方法 子类的权限必须大于父类的权限 即 若父类为protected function cry(),子类必须为 public function cry()】;private只能本类调用 所以不去考虑)
如果子类已经重写或覆盖 父类方法后 还想调用父类的方法 则可以
<?php
class a
{
function cry()
{
echo'你哭了';
}
}
class b extends a
{
function cry()
{
echo'你妹的';
a::cry();
}
}
$a=new b();
$a->cry();
?>直接指定父类类名::cry();即可
后续继续补充.....
相关文章推荐
- php 面向对象的三大要素(封装、继承、多态)以及重写(override)和重载(overload)的举例说明
- php部分--面向对象三大特性-封装(另加连续调用的一个例子)、继承(重写、重载的例子)、多态;
- PHP面相对象编程-重载、覆盖(重写) 多态、接口
- php面向对象 自动加载类 对象串行化 多态的应用
- PHP面向对象——多态
- java 子类继承父类 -- 重写、覆盖与多态
- php面向对象之多态
- java 继承 多态(override->重写(=覆盖)、overload->重载、polymorphism -> 多态)
- 重写、覆盖、重载、隐藏、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析 .
- 重写、覆盖、重载、多态几个概念的区别分析
- 转载--重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析(转)
- 重写、覆盖、重载、多态几个概念的区别分析
- A.4-继承,方法重写(覆盖)(override),虚函数(virtaul)和多态,抽象方法和抽象类abstract,密封类(sealed)和密封方法,常量的定义(const)
- 重写、覆盖、重载、多态几个概念的区别分析
- [原创]C#中的继承、重写、覆盖、多态、virtual override 以及其他
- 重写、覆盖、重载、隐藏、多态几个概念的区别分析
- PHP面向对象之重写与重载