php面向对象之重写(override)
来源:互联网 发布:贵州广电网络如何缴费 编辑:程序博客网 时间:2024/04/28 15:27
什么叫重写?
重写,其实就是子类重新定义父类继承给自己的属性或者方法。
基本特征
父类已经有的属性或方法,子类用同样的名字再定义一次。
为什么要重写?
通常,子类的特征信息的定义,都应该是比父类更为“详细”,其表现在两个方面:
1、父类没有的,子类可以有;(注意:添加特征信息是扩展,不是重写)
2、父类有的,子类也可以有,但子类会定义得“自认为”更为细致或者准确,这就是重写
如果从父类继承的成员不能满足子类的需求,可以对其进行改写,这个过程称为重写(override),也叫覆盖。
因为PHP是弱类型的语言, 所以在方法的参数中本身就可以接收不同类型的数据,又因为PHP的方法可以接收不定个数的参数,所以通过传递不同个数的参数调用不相同方法名的不同方法也是不成立的(这点和java不同)。
注意,在编程语言中,php的重载要和其他语言的重载区别开来;在php中,重写要和重载区分开来;
定义一个动物类,然后定义两个子类小鸡类和羊驼类演示一下,代码才是检验真理的唯一标准
<?php//定义一个动物类class animal { public $weight = 0; public function eating() { echo "动物正在吃东西"; }}class alpaca extends animal { public $weight = 20; //覆盖了父类的属性 //覆盖了父类的方法 public function eating() { echo '羊驼正在吃东西'.PHP_EOL; $this->weight +=5; }}class chicken extends animal { //覆盖了父类的方法 public function eating() { echo '小鸡在吃东西'.PHP_EOL; $this->weight ++; }}$alpaca = new alpaca();$alpaca->eating();$alpaca->eating();echo '羊驼的体重是:'.$alpaca->weight.PHP_EOL;$chicken = new chicken();$chicken->eating();$chicken->eating();echo '小鸡的体重是:'.$chicken->weight.PHP_EOL;
重写的注意项
1、子类只能放大权限,不能缩小权限。
2、对于方法的重写,要求方法的形参必须和父类的形参数量一一对应(在php中,不对应不会报错,但是代码不建议你这样做)。
3、对于构造方法,没有形参要求。
4、对于父类私有的成员方法,虽然没继承(也有一说,继承过来了,但是不能访问),但是也必须保持形参数量一一对应
0 0
- php面向对象之重写(override)
- php面向对象(OOP)—方法重写(override)
- Java面向对象编程之重载(overload)和重写(override)
- PHP面向对象之重写与重载
- PHP面向对象之重写与重载
- php面向对象之重写与重载
- php面向对象 之 多态--重写覆盖
- PHP面向对象之方法重写
- PHP面向对象之重写与重载
- 面向对象—重写(override)
- JavaSE入门学习16:Java面向对象之重写(Override)和重载(Overload)
- PHP面向对象之重写与重载-129
- PHP面向对象编程之--多态:方法重载与重写
- PHP面向对象之方法重写与重载
- 面向对象重写(override)与重载(overload)区别
- 面向对象中的重写(override)与重载(overload)
- 面向对象重写(override)与重载(overload)区别
- 面向对象重写(override)与重载(overload)区别
- 文章标题
- php 网站微信登录class
- Softmax函数
- Java中double数据类型计算会损失精度问题
- PAT 1114. Family Property (并查集)
- php面向对象之重写(override)
- APE文件格式解析(转自MultiMedia之旅)
- SQL CREATE DATABASE语句
- spring websocket 模拟发送消息
- mariadb安装与使用
- 从瀑布模型、极限编程到敏捷开发
- SQL CREATE TABLE 语句
- java正则表达式 过滤特殊字符的正则表达式
- ScheduleExecutorService接口和spring控制定时任务的理解