[TOC]
## 公共的:`public`
* 可以在程序中的任何位置(类内、类外)被其他的类和对象调用。子类可以继承和使用父类中所有的公共成员
## 公共的:`private`
* 被private修饰的变量和方法,只能在所在的类的内部被调用和修改,不可以在类的外部被访问。在子类中也不可以
## 公共的:`protected`
* 用protected修饰的类成员,可以在本类和子类中被调用,但是在其他地方不能被调用
## 判断对象类:`instanceof`
* 判断一个对象是否是某个类的实例
* 判断一个对象是否实现了某个接口
## 接口类: `interface`
* 继承它的子类必须实现 接口类的所有方法
* 使用`implements`继承
```
interface Shop
{
public function buy($gid);
public function sell($gid);
public function view($gid);
}
```
## 抽象类 : `abstract`
* 定义为抽象的类不能被实例化
* 任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。
* 被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。
* 子类必须定义父类中的所有抽象方法;另外,这些方法的`访问控制`必须和父类中一样(或者更为宽松)
* 使用`extends`
```
abstract class AbstractClass
{
// 强制要求子类定义这些方法
abstract protected function getValue();
abstract protected function prefixValue($prefix);
// 普通方法(非抽象方法)
public function printOut() {
print $this\->getValue() . "\\n";
}
}
```
## 多继承: `trait`
* 通过在类中使用`use` 关键字,声明要组合的`trait`名称,具体的`trait`的声明使用`trait`关键词.
* `php5.4`开始引入`trait`, 其目的就是在于减少代码的重复,增加代码的复用性。
* `Trait`不能实例化
* 优先级:自身方法>`trait`的方法>继承的方法
```
// 定义 trait 类 和方法
trait ezcReflectionReturnInfo {
function getReturnType() { /*1*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
// 通过use关键字继承trait类, 来执行方法, 优先级为: 自身方法 > trait方法 > 继承方法
use ezcReflectionReturnInfo;
/* ... */
}
```
## 最终类、方法:`final`
* 不能用来修饰成员属性
* `final` 类 --- 不可被继承。
* `final` 方法---不可被覆盖。
- 简介
- PHP
- 字符串函数
- 数组函数
- 正则
- 加密函数
- 面向对象
- 关键字
- 设计模式
- 魔术方法
- 机制扩展
- 会话机制
- PHP框架
- laravel
- 问题
- swoole
- easyswoole
- workerman
- 数据库
- Sphinx
- MongoDB
- MemCache
- Redis
- 基础操作
- 数据类型
- 持久化
- 分布式锁
- 内存模型
- redis高级特性
- MySql
- 基础操作
- 数据类型
- 数据表引擎
- 锁机制
- 事务处理
- 存储过程
- 触发器
- 索引
- 关联查询
- 分析SQL语句-优化查询
- 分区分表
- 主从复制
- MySql安全性
- 网络协议
- HTTP
- header详解
- 状态码
- nginx-配置
- 逻辑算法
- 时间和空间复杂度
- 常见算法
- 数据结构
- 核心
- 进程、线程、协程
- 存储容量-计量单位
- 开发软件及配置
- 版本控制器
- Git
- Fidder
- Fidder-Android7
- 自动化部署
- Jenkins
- supervisor
- Elasticsearch
- LogStash
- RabbitMQ
- AB测试
- JAVA-JDK
- FileBeat
- PhpStorm
- Composer
- Linux
- API安全
- 高并发及大流量相关概念
- 网站优化
- WEB
- Electron