PHP面向对象之接口

PHP与大多数面向对象编程语言一样,不支持多重继承。也就是说每个类 只能继承一个父类。

为了解决此问题,PHP引入了接口。

接口的思想是指定了一个实现该接口的类必须实现的一系列方法。

接口是一种特殊的抽象类,抽象类是一种特殊的类,所以接口也是一种特殊的类。

 

为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的方法都是抽象方法,那么我们就换一种声明方法使用“接口”,也就是说接口里面所有的方法必须都是声明为抽象方法,

另外接口里边不能声明变量(但可以声明常量constant)

注意:接口里面所有的成员都是public权限的。所以子类在实现的时候,也一定要使用public权限。

声明一个类的时候,使用的关键词是‘class’,而接口一种特殊的类,使用关键词‘interface’

类的定义

<?php
class 类名{
    .............
}

接口的定义

<?php
interface 接口名{
    ...............
}
<?php
interface demo{
	const NAME="HAOYUN";//定义一个常量
	public function say();//定义一个抽象方法 say
	public function run();//定义一个抽象方法 run
}

 代码分析:
定义了一个demo的接口,里边声明了say()与run()以及一个常量,因为接口里面所有的方法都是抽象方法,所以在声明抽象方法时就不需要用抽象类那样使用 abstruct 这个关键词了,默认的已经加上了这个关键词,另外在接口里边修饰符必须是公共的,所以当不写的时候默认为public。

所以对于接口里面的成员我们就不能使用private和protected的权限了。

重点:因为接口是一种特殊的抽象类,里面所有的方法都是抽象方法,所以接口也不能产生实例对象;

它也做为一种规范,所有抽象法法需要子类去实现。

 

而我们定义接口的子类实现接口中全部抽象方法使用的关键词是implements,而不是extends

<?php
interface demo{
	const NAME="HAOYUN";//定义一个常量
	public function say();//定义一个抽象方法 say
	public function run();//定义一个抽象方法 run
}
class demos implements demo{
	public function say(){
		echo "say方法";
	}
	public function run(){
		echo "run方法";
	}
}
//实现了全部方法,我们可以使用子类去实例化对象了
$demos=new demo();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值