面向对象 - 接口

  • 作者:KK

  • 发表日期:2017.6.12


要点速读

  1. 这个知识点在平时开发中不多用,读框架代码的时候就会遇到,到时候回来复习这个知识就好了

  2. 接口没有实际的工作代码,它的和抽象类的作用差不多,都是提要求

    比如我们要向公司报销一些费用时需要发票对吧,这就是公司提的要求

    我们要求别人登录时一定要发账号密码,这也是一种要求,不是口头的要求,是代码级别的要求,满足不了要求就无法往下运行的


定义接口

interface User{

}

这样就定义了一个空的接口,名叫User,像定义类的时候用class关键字一样,定义接口就是用interface关键字

接口可以定义常量和方法,但不能定义变量:

interface User{
	const STATUS_ACTIVE = 1;
	
	//public $name = '';  // 报错
	
	public function say();
	
	public function walk();
}

其中方法必然是空方法,不能有代码,这个和抽象类的抽象方法一样


实现接口

接口的工作代码都是空的,比如上面say方法和walk方法是个空的方法,这些空方法是等着被实现的,所以使用接口一般称为实现接口

class MyUser implements User{
	public function say(){
		echo 111;
	}
	
	public function walk(){
		echo 111;
	}
}

以上就是定义了一个MyUser的类,通过implements关键字实现了User接口,还记得继承父类是用extends关键字的吧,那实现一个接口就用implements关键字,这样换一换思维就行了


可以实现多个接口

class MyUser implements User1,User2{
	//...
}

在implements后面的接口名称以,号间隔隔开多个接口名称就可以了