博主信息
博文 37
粉丝 1
评论 0
访问量 41429
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP的接口(interface)和抽象类(abstract)
Jason Pu?
原创
3169人浏览过

一.php 接口(interface)

1.接口的定义:
接口可以理解为类的模版,提前定义实现它的类需要实现哪些功能。

2.接口的特点:
1)上下级接口可以通过extends关键词继承
2)接口的所有方法默认都是public权限(因为具体功能要靠实现类实现)
3)接口可以定义常量,不能定义变量
4)一个类可以同时”implements”(实现)一到多个接口;
5)实现类必须实现所有接口定义好的功能,不然会报错
6)接口不能实例化操作,所以要使用接口中的成员,就必须借助实现类(implements)实现

3.接口的语法:

  1. interface 接口名称{
  2. //常量成员
  3. //抽象方法
  4. }

下面简单演示一个接口的使用:

定义一个文章接口:

  1. interface Article{
  2. const name = "小说阅读网";
  3. public function publishArticle();
  4. }

定义一个评论和回复的功能:

  1. interface question{
  2. public function ask();
  3. public function answer();
  4. }

接口的继承:定义一个转发功能,但必须有文章发布功能,所以让转发功能继承文章发布功能

  1. interface Aritcle2 extends Article{
  2. public function relayArticle();
  3. }

接口的实现类:接下来就implements实现接口的功能实现所有接口的功能:

  1. class Xiaoshuo implements Aritcle2,question{
  2. public function publishArticle(){
  3. echo "发布了一篇文章"."<br>";
  4. }
  5. public function relayArticle(){
  6. echo "转发了一篇文章"."<br>";
  7. }
  8. public function ask(){
  9. echo "提了一个问题"."<br>";
  10. }
  11. public function answer(){
  12. echo "回答了一个问题"."<br>";
  13. }
  14. }

接下来我们实例化一下这个类:

  1. $xs = new Xiaoshuo();
  2. $xs->answer();
  3. echo $xs::name;


二.抽象类 (abstract)

抽象类的特点:
1)定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

2)继承一个抽象类的时候,子类必须定义父类中的所有抽象方法

3)和接口相比,接口只有基本框架,描述了每个方法的功能,相当于一个毛坯房,而抽象类则相当于简装房,实现类就相当于精装房,实现了接口和抽象类的抽象方法的”工作类”。

4)抽象类通常具有抽象方法,方法中没有大括号,抽象类的抽象方法不实现具体功能,由子类完成

5)如果抽象方法有参数,那子类的实现也必须要有相同的参数数量


例如我们定义一个问题回答平台的抽象类:

  1. abstract class questionPlatform {
  2. public function write($author,$questionTitle){
  3. return $author."写了一篇回答:".$questionTitle;
  4. }
  5. //抽象方法:
  6. abstract public function answerQuestion($asker,$question);
  7. }

抽象类和接口一样不可以直接实例化,必须通过子类才能使用
接下来我们通过extends实现这个抽象类:

  1. class inpQuestion extends questionPlatform{
  2. // 实现抽象方法:
  3. public function answerQuestion($asker,$question){
  4. return $asker."提了一个问题:".$question;
  5. }
  6. }

接下来我们实例化并调用一下

  1. $qus = new inpQuestion();
  2. echo "<hr>";
  3. echo $qus->answerQuestion("小李","PHP真的不难吗?");
  4. echo "<hr>";
  5. echo $qus->write("张三","PHP真不难");

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学