PHP中的抽象类和抽象方法自己用的不多,但是经常会在项目中看到别人使用,同样,今天在看别人的代码的时候,发现使用了抽象类,就总结下:

抽象类:

1、如果一个类中有一个方法是抽象方法,则这个类就是抽象类;

2、抽象类必须加上abstract关键字修饰;

抽象方法:

定义:一个方法如果没有方法体,则这个方法就是抽象方法

1、一个方法没有方法体,直接用分号结束的方法;

2、如果是抽象方法,必须使用abstract抽象关键字形容

注意:1、只要有abstract修饰的类就是抽象类

2、除了在抽象类中可以有抽象方法之外,和正常的类完全一样

3、抽象类不能实例化对象

4、如果有抽象类,就必须有这个类的子类,并且在子类中写方法覆盖抽象类中的抽象方法(加上方法体)

5、子类必须全部重写父类中的抽象方法,这个子类才能被实例化,如果只是实现部分,那么这个子类还是抽象类

抽象类的作用:就是严格要求子类的结构,所以抽象类其实就是一个规范。

抽象方法的作用:就是规定子类必须有这个方法,且将功能交给子类来处理,只写出来方法的结构,而没有实现(无方法体),具体的功能实现交给具体的子类根据自己的需求实现

/**

* 抽象类

*

*/

abstract class Person

{

public $name;

public $age;

//抽象方法

abstract function say();

abstract function eat();

function run()

{

echo "hello world";

}

function sleep()

{

echo "test";

}

}

/**

* 抽象类的子类

*

*/

class StudentCn extends Person

{

function say()

{

echo "我说中文
";

}

function eat()

{

echo "我用筷子吃饭";

}

}

接口:接口是一种特殊的抽象类

1、抽象类和接口都有抽象方法

2、抽象类和接口都不能实例化

3、抽象类和接口的使用意义(即作用)相同

比较:

a、接口中的方法,必须全部是抽象方法,所以接口中的抽象方法不需要使用abstract关键字,直接用分号结束即可

b、接口中的成员属性,必须是常量(不能有变量)

c、所有的方法必须全部是public

d、声明接口不适用class,而是使用interface

Tips:

1、可以使用extends让一个接口继承另一个接口,即常用的继承(扩展新抽象方法),无覆盖的关系

2、可以使用一个类来实现接口中全部方法,也可以使用一个抽象类,来实现接口中的部分方法

3、不要使用extends这个关键字,使用implements实现implements相当于extends

4、一个类可以在继承另一个类的同时,使用implements实现一个接口,也可以实现多个接口(一定要先继承,再实现接口)

/**

* 接口

*/

interface Demo

{

const Name = "妹子";

const Age = 10;

function test();

function test2();

}

echo Demo::Name;//访问常量

/**

* 接口继承接口,用于扩展接口

*/

interface Test extends Demo

{

function test4();

}

/**

* 普通类

*/

class world

{

function test5()

{

}

}

/**

* 继承+接口

*/

class Hello extends World implements Test

{

function test()

{

}

function test2()

{

}

function test3()

{

}

function test4()

{

}

function test5()

{

}

}

php抽象类继承抽象类,PHP抽象类和抽象方法以及接口相关推荐

  1. 抽象类继承多个抽象类_多重继承?抽象类?C++的内存布局并不复杂

    多重继承 先来看看多重继承吧 class 先来看构造函数 ...... 001917DD pop ecx 001917FC mov ecx,dword ptr [this] ;取出this指针 001 ...

  2. 【Kotlin】抽象类 ( 声明 | 抽象类成员 | 抽象类继承 | 抽象方法覆盖 | 抽象方法实现 )

    文章目录 I . 抽象类总结 II . 抽象类声明 III . 抽象类中的 ( 正常 / 抽象 ) 的 ( 成员 / 方法 ) IV . 抽象类继承 V . 抽象方法的覆盖 VI . 抽象方法的实现 ...

  3. 不含抽象方法的抽象类 java_Java:抽象类继承非抽象类,且不包含抽象方法有何负面作用吗?...

    我定义了一个抽象类 继承非抽象类, 且不包含抽象方法 但是运行 OK 这样做有啥负面作用? public abstract class ExceptionBase extends Exception ...

  4. JavaSE面向对象:继承、多态、Super、Object类、重写、static、final、静态成员、懒汉式、饿汉式、单例设计模式、初始化块、抽象类、抽象方法、接口

    感谢尚硅谷免费提供的视频 继承 ** 理解 ** 生活中的继承:子女继承了父母的财产或相貌或才华 java中的继承:一个类不用自己定义属性或方法,就已经具备了另一个类的属性和方法 把这种现象称为jav ...

  5. java基础之继承补充和抽象类

    继承的补充和抽象类 1.子类和父类中出现了同名的变量该如何访问?(super) 使用super关键字可以直接指定父类空间 格式: super.成员变量 访问成员变量的时候特点: 如果所指定的空间找不到 ...

  6. JAVA 继承基本类、抽象类、接口

    Java是一个面向对象的语言,java面向对象一般有三大特征:封装.继承.多态. 封装:就是把一些属性和方法封装到一个类里. 继承:就如子类继承父类的一些属性和方法. 多态:就如一个父类有多个不同特色 ...

  7. php 抽象类 继承,PHP 抽象类继承抽象类时的注意点

    原标题:PHP 抽象类继承抽象类时的注意点 抽象类继承另外一个抽象类时,抽象类中,不能重写抽象父类的抽象方法.这样的用法,可以理解为对抽象类的扩展. 下面的例子,演示了一个抽象类继承自另外一个抽象类时 ...

  8. java 抽象类继承抽象类_Java之继承、抽象类、接口篇

    一.继承(extends) 什么是继承? 继承是对现实生活中的"分类"概念的一种模拟. 狮子拥有动物的一切基本特性,但同时又拥有自己的独特的特性,这就是"继承" ...

  9. 接口抽象类继承父类和子类

    1.接口是什么? 接口可以理解为一个特殊的抽象类,是由全局常量和公共抽象方法组成的. 所以,如果,一个抽象类的方法都是抽象的,那么就可以通过接口的形式来表示. class 用于定义类 interfac ...

最新文章

  1. 【译】用图表展示未知----通向报表服务的阶梯系列(五)
  2. 备忘之--apache下为站点添加错误页面
  3. 10.热空气扭曲效果
  4. 邻接表1 - 试在邻接表存储结构上实现图的基本操作 insert_vertex 和 insert_arc-数据结构-图-icoding
  5. metrics_FlexyPool如何支持Dropwizard Metrics包重命名
  6. goland中grpc的安装
  7. Java中四种访问权限总结
  8. 【论文笔记】命名实体识别论文
  9. 深入分析java线程池的理解
  10. DSP技术:基于TMS320F28027芯片的温度测量系统
  11. 免杀技术有一套(免杀方法大集结)
  12. C语言strcmp函数用法
  13. Oracle 临时表详解(temporary table)
  14. [转载]this 指向详细解析(箭头函数)
  15. php正则校验特殊字符,PHP正则表达式中的特殊字符
  16. oppor11st升Android p,OPPO R11st刷机教程_OPPO R11st卡刷升级更新官方系统包
  17. 文本长度过长时隐藏并显示省略号“...”,以及鼠标停留时悬浮显示全部文本(兼容IE)
  18. 使用JQuery快速高效制作网页交互特效第九章所有上机
  19. 赛门铁克拆分后蜕变:未来不只是“防病毒”
  20. YX一周面试题911-918

热门文章

  1. mac80211概览
  2. android 权限
  3. 在Emacs中使用git
  4. Linux查看文件第几行到第几行命令
  5. python print rdd_spark: RDD与DataFrame之间的相互转换方法
  6. zookeeper管理mysql_Mysql系列九:使用zookeeper管理远程Mycat配置文件、Mycat监控、Mycat数据迁移(扩容)...
  7. 时间区间页面设计两个框html,elementUI 2个输入框 时间区间月份选择
  8. git学习(五)分支操作和解决冲突
  9. 人体轮廓_速写人体轮廓的处理有哪些技法?
  10. eclipse安装OpenExplorer插件--快速打开文件目录