PHP中的抽象类跟接口

WBOY
Libérer: 2016-06-20 12:32:28
original
845 Les gens l'ont consulté

很多东西不经常用就会忘记,当你去面试的时候别人问的细你会发懵,这里稍微总结下:

一、什么是抽象类

抽象类其实跟父类的方法有点类似,避免子类重复写一些功能,只需要继承这个类就拥有了父类的所有方法,不同的是抽象类会去定义抽象方法,子类继承的时候必须实现抽象方法,因此适用于一些有固定规范的情形

二、抽象类特性

1、不能直接实例化,必须先继承,然后再实例化子类

2、抽象类至少要包含一个以上的abstract方法,这些方法就是子类必须要实现的方法,其他的方法子类直接继承,可以覆盖

 // 强制要求子类定义这些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() {    print $this->getValue(); }
Copier après la connexion

3、子类必须实现抽象类中定义的抽象方法,并且方法的可见性必须和抽象类中一样(或者更为宽松)。如果抽象类中某个抽象方法被声明为protected,那么子类中实现的方法就应该声明为protected或者public,而不 能定义为private

三、什么是接口类

接口是一种规范,他不去定义方法的实现,只要求我这些接口必须被实现,具体怎么实现是你的事

四、接口类的特性

1、接口类的所有方法都只包含声明(方法名称跟入参),不能包含方法体

interface  SyncAccountInterface{    public function syncLogin($userId);    public function checkUsername($username, $randomName = '');}
Copier après la connexion

2、接口类的所有方法都必须在实现接口类的方法中都实现,,少一个实现就会报错

3、一个类可以实现多个接口,接口可以解决类的继承不能继承多个类的问题

五、抽象类跟接口类的异同

1、抽象类跟接口类都包含了子类必须去实现的方法,不同的是抽象类还可以包括其他方法子类不用去实现,直接继承或覆盖这些方法,但标识为abstract的方法必须去实现。接口类不同,里面所有的方法子类必须去实现。

2、一个类只能继承一个类,但可以实现多个接口,因此在不同的使用场合我们需要抽象类,也需要接口,根据使用场合定

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!