1. 在类的声明中,通过关键字extends来创建一个类的子类。一个类通过关键字implements声明自己使用一个或者多个接口。
extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重写父类的方法; implements 是实现多个接口, 接口的方法一般为空必须重写才能使用。
2.extends 是继承父类,被继承的类不是声明为final或者定义为abstract就能继承,PHP中不支持多重继承(Java也不支持,而C++是支持多重继承的),但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开。如:class A extends B implementsC,D,E
3. extends,可以实现父类,也可以调用父类初始化 this.parent(),而且会覆盖父类定义的变量或者函数。而 implements,实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。
当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 : 接口: 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
接口中定义的所有方法都必须是公有,这是接口的特性。
什么时候用接口?
1、定规范,保持统一性;
2、多个平级的类需要去实现同样的方法,只是实现方式不一样
接口使用规范
接口不能实例化 接口的属性必须是常量 接口的方法必须是public【默认public】,且不能有函数体 类必须实现接口的所有方法 一个类可以同时实现多个接口,用逗号隔开 接口可以继承接口【用的少】
<?php
/**
* Created by PhpStorm.
* User: wph
* Date: 2019/1/10
* Time: 9:55
*/
interface usb{
const brand = 'Huawei'; //接口的属性必须是常量
public function connect(); //接口的方法必须是public【默认public】,且不能有函数体
}
// new usb() 接口不能实例化
// 类实现接口
class Android implements usb{
public function connect()
{
//类必须实现接口的所有方法
echo '实现接口的connect';
}
}
interface usbA{
public function connect();
}
interface usbB{
public function contact();
}
// 类可以同时实现多个接口
class mi implements usbA,usbB{
public function connect(){
}
public function contact(){
}
}
|