本文实例总结了php抽象类和接口相关知识点。分享给大家供大家参考,具体如下:
抽象类(一种抽象的类)
一、什么是抽象方法?
定义:一个方法如果没有方法体(一个方法,不使用{},直接使用分号结束的方法,才是没有方法体的方法),则这个方法就是抽象方法。
class Person{ abstract function say(); 没有方法体的 、使用abstract 关键字修饰 abstract function say(){ 这个不是、有方法体{}, }; }
总结 1.声明一个方法不使用{},而直接分号结束。2.如果是抽象方法,必须使用abstract(抽象 关键字来修饰)。
二、什么是抽象类呢?
1.如果一个类中有一个方法是抽象的方法,这个类就是抽象类。
2.如果声明一个抽象类,则这个类必须要使用abstract 关键字来修饰。
abstract class Person{ public $name; abstract function say(); abstract function eat(); }
注意
1.只要使用abstract 来修饰的类,就是抽象类。
2.抽象类是一个特殊的类,特殊在哪里(在抽象类中可以有抽象方法)。
3.除了在抽象类中可以有抽象方法以外,和正常的类完全一样。
注意2
1. 抽象类不能实例化对象(不能创建出对象)。
$p=new Person(); //报错
2. 如果看见抽象类,就必须写这个类的子类,将抽象类中的抽象方法覆盖(加上方法体)。
class student extend Person() { function say(){ // 只覆盖了父类的一个 } }
3. 子类必须全部实现(覆盖重写)抽象方法,这个子类才能创建对象,如果实现部分,那么还有抽象方法,他还是抽象类。
class student extend Person() { function say(){ // 只覆盖了父类的一个 } }
抽象方法作用
1. 抽象方法就是一个规定,规定子类必须有这个方法的实现,功能交给子类实现。
只写出来结构,没有实现,实现交给具体的子类(按自己功能实现)。
class student extend Person() { function say(){ } // 覆盖了父类两个抽象方法 function eat(){ } }
抽象类作用
就是要求子类的结构,所以抽象类就是一个规范。(只有形)
接口 (接口是一种特殊抽象类,接口也是一种特殊的类 )
接口和抽象类的相同点
1.抽象类和接口都有抽象方法。