php 面向对象方法重写,php面向对象的重写与重载

本文详细介绍了PHP中的方法重写(Override)和重载(Overload)概念。方法重写发生在子类覆盖父类的同名方法,要求参数一致,子类访问修饰符至少与父类相同。而方法重载则是在同一类中通过不同参数列表实现同名方法的区分,允许参数个数、类型或顺序不同。通过实例代码展示了这两个概念的应用。
摘要由CSDN通过智能技术生成

重写:

就是当子类继承父类的一些方法后,子类又在其内部定义了相同的方法,则这个新定义的方法会覆盖继承而来的父类的方法,子类只能调用其内部定义的方法。

有以下几点要求:

1.当一个父类和子类有一个方法,参数和名字完全一致,那么子类方法会覆盖父类的方法。

必须参数一致,才会实现方法覆盖。当参数个数不一致,则会报错(这就牵扯到上面说所得方法重载)。当方法名字不一致,就不会覆盖,只是子类新定义的方法。

2.在实行方法覆盖的时候,访问修饰符可以是不一样的,但是子类的访问范围必须大于等于父类的访问范围。

这是php这些语言设计时的规定吧。我是这么理解的是访问高一层的东西比较容易,如果再去访问底层的东西权限肯定要高一些。

要求参数和名字一样。并不是要求子类,父类名称相同。

是要求参数和名字一样,具体就是要求参数的个数与父类相同,而并不是参数名称一致。即传递的参数名字可以为任意,只要保证传递的个数相同即可。

看代码:

{public function sasa($name){echo $name,‘狗!
‘;

}

}class zhen extendsshao{public functionaaa()

{echo ‘猫
‘;

}

}$lli = newzhen();$lli->aaa();$lli->aaa(‘binghh‘);?>

{public functiontext(){echo ‘父类‘;

}public functiontextt(){echo ‘父亲‘;

}

}class erzi extendsfu{public functiontext()

{

parent::text();//我要父类的东西

echo ‘儿子‘;//重写

}

}$shili = newfu();$erzi = newerzi();$erzi->text();?>

重载:

重载是类的多态的一种实现。函数重载指一个标识符被用作多个函数名,且能够通过函数的参数个数或参数类型将这些同名的函数区分开来,调用不发生混淆。即当调用的时候,虽然方法名字相同,但根据参数的不同可以自动调用相应的函数。

php不好实现。

可以使类里面的某个方法产生多种效果,根据传入参数不同,可以执行不同的逻辑。

有以下几点要求:

1、在使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样);

2、不能通过访问权限、返回类型、抛出的异常进行重载;

3、方法的异常类型和数目不会对重载造成影响;

有点复杂 代码不准...

{public functiontext(){echo ‘父类‘;

}public functiontextt(){echo ‘父亲‘;

}

}class erzi extendsfu

{function test($name)

{//方法重载

parent::text();//我要父类的东西

echo "erzi",$name;//重写

}

}$erzi = newfu();$erzi-> text("123");?>

重写只存在于子类与父类中,重载存在于一个类中。

override是重写

overload是重载

原文:http://www.cnblogs.com/xuan584521/p/6395217.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值