### 概述
重写也叫作覆盖,就是当子类的成员与父类的成员的名字相同的时候,从父类继承下来的成员会重新定义!此时,通过子类的对象访问的时候,真正起作用的是子类中定义的成员!
### 实例
在真实的项目中,一般是可以通过修改方法的名字来避免重写的!但是,有些方法的名字是固定的,比如:构造方法,析构方法等魔术方法,所以,这种情况,重写不可避免!
**如果必须要执行被重新的父类方法,必须在子类的方法中,显式的调用父类的同名方法** .
~~~
class Person{
public $name;
public function show()
{
echo "父类";
}
}
class Stu extends Person{
public function show()
{
parent::show(); //parent不一定就代表本类的上一级父类,如果父类中没有找到相应的方法,会继续的向更上一级的父类查找!
echo "子类";
}
}
$stu = new Stu();
$stu->show();
~~~
~~~
父类
子类
~~~
### 注意
1. 私有成员(私有属性和私有方法)都不能被重写,但是子类还是可以定义跟父类私有成员同名的成员,但是此时,只是当作子类自身的新的成员而已 .
2. 虽然父类的私有方法不能被重写,但是,如果子类重新定义了一个同名的方法的时候,方法参数的形式(参数的个数)还是需要和父类保持一致 .
- PHP加密技术
- md5加密
- Crypt加密
- 函数
- 概述
- 强类型参数
- 可变参数列表
- 值传递&引用传递
- 变量作用域
- 可变函数
- 嵌套函数
- 递归函数
- 匿名函数(闭包)
- 面向对象
- 概念
- 类
- 对象的传值
- 对象的克隆
- 构造方法
- 析构方法
- 克隆方法
- $this
- 类常量
- 静态属性
- 静态方法
- 继承
- 重写
- 重载
- 概述
- 属性重载
- 概述
- __set()
- __get()
- __unset()
- __isset()
- 方法重载
- 概述
- __call()
- __callstatic()
- 封装
- 最终类
- 抽象类
- 接口
- 对象的序列化与反序列化
- __sleep()
- __wakeup()
- 其他魔术方法
- 对象的遍历
- 类和对象相关函数
- 错误
- 概述
- 设置错误级别
- trigger_error()触发错误
- 处理PHP中的错误
- 异常
- 概述
- 自定义异常类
- 自定义文件写入异常类
- 记录和发送异常信息
- 使用观察者模式处理异常信息
- 自定义异常处理器
- 设计模式
- 创建型
- 单例模式
- 工厂模式
- 原型模式
- 结构型
- 注册树模式
- 适配器模式
- 数据映射模式
- 装饰器模式
- 代理模式
- 行为型
- 策略模式
- 观察者模式
- 迭代器模式
- 网络
- cURL
- Oauth2.0
- QQ第三方登录
- TCP/IP协议
- 概述
- HTTP协议
- 概述
- HTTP请求协议
- HTTP响应协议
- WebSocket
- 安装扩展
- Redis
- Socket
- 计算机通信
- socket简介
- PHP操作socket
- TCP
- HTTP服务端
- WebSocket
- PHP7
- 生成器yield
- 异常finally
- CGI和FPM
- php有用命令
- 内存