PHP面向对象(二):抽象与接口

一、抽象类: abstract

1:抽象类中不一定包含抽象方法,包含抽象方法的类一定是抽象类。抽象类中既可以有抽象方法,也可以有普通方法。

2:定义为抽象的类不能被实例化。

3:继承一个抽象类的时候,子类必须定义父类中的所有抽象方法。这些方法的访问控制必须和父类中一样(或者更为宽松)

4:只有通过子类继承抽象类并覆盖了抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。

抽象类的细节:

    1:抽象类中是否有构造函数?有,用于给子类对象进行初始化。

    2:抽象关键字abstract和哪些不可以共存?final ,   private , static

二、接 口

1:使用interface来修饰,接口中的抽象方法不能用abstract这个关键字来修饰(原因:在抽象类里用关键字abstract目的是为了区分抽象方法和普通方法,在接口中所有的方法都是抽象方法,就没有必要使用关键字abstract来修饰)

2:抽象类是特殊的类,接口是特殊的抽象类(接口里面的方法全部是抽象方法)。

3:接口是一堆方法的说明,接口中的属性不能含有变量,只能用常量

扫描二维码关注公众号,回复: 4051905 查看本文章

4:类与接口之间实现关系,用implements ,可以多实现,接口之间用逗号隔开。

5:接口与接口之间继承关系,用extends;可以多继承

  6:接口就是供组装成类用的,方法最小权限是共有(public)

继承单接口:

继承多接口

接口和抽象类的共同点:

1.都包括抽象方法

2.都不能直接实例化

3.抽象类和接口都是定义了一种规范,子类必须实现父类的抽象方法

抽象类和接口的区别:

    1:抽象类只能被继承,而且只能单继承。

    接口需要被实现,而且可以多实现。

    2:抽象类中可以定义非抽象方法,子类可以直接继承使用。

    接口中都有抽象方法,需要子类去实现。

    3:抽象类的成员修饰符可以自定义。

    接口中的成员修饰符是固定的。全都是public的。

 

猜你喜欢

转载自blog.csdn.net/weixin_34128914/article/details/84024172