php中抽象类和接口的区别
来源:互联网 发布:淘宝装 编辑:程序博客网 时间:2024/06/05 19:54
abstract抽象类
概念
只能被继承,不能实例化对象的类!
基本思想:
在类中规定一些必须要完成的动作(功能|方法),但是我们不去完善方法体,这种只规定了方法名而没有完善方法体的方法叫作抽象方法!
然后,该抽象类只能被继承,不能去实例化对象,因为抽象方法本来就是不完整的方法,需要下一级的类去实现(完善方法体)!
而继承它的类也只有两种选择:
要么完成父类(抽象类)中的抽象方法(完善方法体)
要么继续做抽象类!
所以,抽象类体现在语法上,就是在类中出现了抽象方法!
从逻辑上来说,抽象类其实就是不完整的类,所以无法实例化一个真实的对象!
特别强调
1, 如果一个类继承自一个抽象类,而其自身不是一个抽象类,则必须实现父类中的所有的抽象方法!
2, 抽象类中,不但可以包括抽象方法,还可以包括其他任意的普通成员(属性、常量、非抽象方法),都可以被子类所继承
3, 通俗的讲,抽象类给其子类留下的不但有“遗产”,还有“遗嘱”!
抽象类的作用
1, 可以完成普通类的继承,为其他的类提供公共的代码!
2, 抽象类往往用于规定子类中必须要完成的方法或者成员,规定子类的方法结构,有时候为了保证完成一系列功能相似的多种操作类的结构一致,我们要求这些类都继承自一个相同的抽象类!
interface接口
概念
接口就是一个对象对外的公开(public)的操作方法!
在PHP中定义一个接口,其实就是一种纯粹的规范或规定,规定该接口的下级类必须要“实现”的公共方法!
接口不是类!接口是类的规范,类又是对象的规范!
在一个接口中,只能出现两种成员:
接口常量:其实就是普通的常量,只不过是出现在接口中而已!
抽象方法:没有方法体的方法,但是此时,抽象方法必须声明为public(与抽象类中的抽象方法不同)
接口的定义
是通过关键字interface来定义的:
当一个类“实现”一个接口的时候,也只有两种选择:
1, 实现该接口中所有的公开的抽象方法(完善方法体)
2, 如果该类没有实现接口中的部分(或全部)公开的抽象方法,就应该把该类声明成抽象类,然后等待更下一级的类去实现!此时,没有被实现的方法最好继续声明成抽象方法!
接口与抽象类的比较
1, 接口不是类,但是抽象类是类
2, 从逻辑或结构上看,接口可以看成是抽象类的一个“子集”,比抽象类更“抽象”,只有抽象方法没有其他的普通的方法
3,PHP不支持多继承,但是,支持多实现!也就是说,一个类可以同时实现多个接口,这有是接口与抽象类最本质的区别!
4, 接口与抽象类都可以作为其他类的规范,都可以规定下级类的内部结构,但是在真实的项目中,接口使用的要多一些!
问一个问题哦
一个类中可以有多个最终方法吗?
阅读全文
0 0
- php中抽象类和接口的概念和区别
- php中抽象类和接口的概念和区别
- php中抽象类和接口的概念和区别
- php中抽象类和接口的概念和区别
- php中抽象类和接口的概念和区别
- php中抽象类和接口的概念与区别
- php中抽象类和接口的区别
- php中抽象类和接口的概念与区别
- php中接口和抽象类的区别
- PHP中抽象类和接口的区别
- 浅谈在PHP中抽象类和接口的区别
- php中抽象类和接口的区别
- php 抽象类和接口的区别
- PHP中抽象方法、抽象类和接口的用法
- java中抽象类和抽象接口的区别
- PHP的抽象类、接口类的区别和选择?
- PHP的抽象类、接口类的区别和选择
- PHP的抽象类、接口的区别和选择
- 大数据正式15
- JAVA面向接口编程
- 认清Android框架 MVC,MVP和MVVM
- Servlet什么时候初始化?
- Virtual Machine not launching Gazebo
- php中抽象类和接口的区别
- 起于前端,但不止于前端 —— 致“新手菜鸟”
- 小程序wxss公用模板
- web.xml的加载过程配置详解
- SVN
- Mybatis之字符串转换错误
- C++类的static(静态)成员
- Linux安装谷歌拼音输入法
- mybatis批量更新不同值的字段