PHP中的抽象类跟接口
一、什么是抽象类
抽象类其实跟父类的方法有点类似,避免子类重复写一些功能,只需要继承这个类就拥有了父类的所有方法,不同的是抽象类会去定义抽象方法,子类继承的时候必须实现抽象方法,因此适用于一些有固定规范的情形
二、抽象类特性
1、不能直接实例化,必须先继承,然后再实例化子类
2、抽象类至少要包含一个以上的abstract方法,这些方法就是子类必须要实现的方法,其他的方法子类直接继承,可以覆盖
// 强制要求子类定义这些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() { print $this->getValue(); }
3、子类必须实现抽象类中定义的抽象方法,并且方法的可见性必须和抽象类中一样(或者更为宽松)。如果抽象类中某个抽象方法被声明为protected,那么子类中实现的方法就应该声明为protected或者public,而不 能定义为private
三、什么是接口类
接口是一种规范,他不去定义方法的实现,只要求我这些接口必须被实现,具体怎么实现是你的事
四、接口类的特性
1、接口类的所有方法都只包含声明(方法名称跟入参),不能包含方法体
interface SyncAccountInterface{ public function syncLogin($userId); public function checkUsername($username, $randomName = '');}
2、接口类的所有方法都必须在实现接口类的方法中都实现,,少一个实现就会报错
3、一个类可以实现多个接口,接口可以解决类的继承不能继承多个类的问题
五、抽象类跟接口类的异同
1、抽象类跟接口类都包含了子类必须去实现的方法,不同的是抽象类还可以包括其他方法子类不用去实现,直接继承或覆盖这些方法,但标识为abstract的方法必须去实现。接口类不同,里面所有的方法子类必须去实现。
2、一个类只能继承一个类,但可以实现多个接口,因此在不同的使用场合我们需要抽象类,也需要接口,根据使用场合定
上一篇: MySql Blob图片类型存储Bug解决:索引超出了数组界限错误_MySQL
下一篇: CodeIgniter自定义控制器MY_Controller用法分析,codeigniter控制器_PHP教程
推荐阅读
-
PHP中的抽象类跟接口
-
php中剔除html标签里的属性(可用正则表达式)
-
php构造方法中析构方法在继承中的表现 链表需要析构 c# 析构 析构函数用
-
php多重接口的实现方法_PHP教程
-
jQuery 中的ajax在没有获取php返回的值时,原来html的标签的值会是空白,怎么解决?
-
php 中的session 和cakephp中的session有什么区别,该怎么解决
-
PHP教程.PHP中的数据处理_PHP
-
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量),常量php_PHP教程
-
在php中拼的sql话语
-
YII框架中的表单验证是用的javascript来验证的还是使用PHP本身来验证的?