PHP中的抽象类跟接口

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

1、什么是抽象类面试

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

2、抽象类特性this

一、不能直接实例化,必须先继承,而后再实例化子类code

二、抽象类至少要包含一个以上的abstract方法,这些方法就是子类必需要实现的方法,其余的方法子类直接继承,能够覆盖继承

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

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

3、什么是接口类get

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

4、接口类的特性function

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

interface  SyncAccountInterface
{
    public function syncLogin($userId);
    public function checkUsername($username, $randomName = '');
}

二、接口类的全部方法都必须在实现接口类的方法中都实现,,少一个实现就会报错

三、一个类能够实现多个接口,接口能够解决类的继承不能继承多个类的问题

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

一、抽象类跟接口类都包含了子类必须去实现的方法,不一样的是抽象类还能够包括其余方法子类不用去实现,直接继承或覆盖这些方法,但标识为abstract的方法必须去实现。接口类不一样,里面全部的方法子类必须去实现。

二、一个类只能继承一个类,但能够实现多个接口,所以在不一样的使用场合咱们须要抽象类,也须要接口,根据使用场合定

相关文章
相关标签/搜索