php 面向对象 接口和抽象类
接口
定义:
interface 接口名{
public function 方法名();
}
class 类名 implement 接口名{
public function 方法名(){
//和接口中的一致
}
}
接口实例
<?php
interface People{
public function eat();
public function sleep();
}
class Man implements People{
public function eat(){
echo '吃吃吃次';
}
public function sleep(){
echo '睡睡睡';
}
}
class L{
public static function factory (People $user){
return $user;
}
}
$user=L::factory(new Man());
$user->eat();
$user->sleep();
抽象类
abstrct class 类名{
public function 方法名(){
}
}
class test extends 类名(){
$this->抽象类方法();
}
区别
- 对接口的使用方式是通过关键字implements来实现的,而对于抽象类的操作是使用类继承的关键字extends实现的,使用时要特别注意。
- 接口没有数据成员,但是抽象类有数据成员,抽象类可以实现数据的封装。
- 接口没有构造函数,抽象类可以有构造函数。
- 接口中的方法都是public类型,而抽象类中的方法可以使用private、protected或public来修饰。
- 一个类可以同时实现多个接口,但是只能实现一个抽象类。
- 抽象类中实现的方法不需要在子类中重新实现直接$this->方法()调用即可.但接口需要实现
- 接口中都是空方法
- 相同点:函数体内不能写任何东西,连两个大括号都不能写!!!如:function getName();这样就行了
版权声明:
作者:超级管理员
链接:
https://apecloud.ltd/article/detail.html?id=45
来源:猿码云个人技术站
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
打赏
![/static/admin/img/weixin.jpg](https://www.apecloud.ltd/static/admin/img/weixin.jpg)
![/static/admin/img/zfb.jpg](https://www.apecloud.ltd/static/admin/img/zfb.jpg)
共有0条评论