Zihao

Make small but daily progress

0%

面向对象的基础五

接口的定义和规范

接口是把隐式公共方法和属性组合起来,以封装特定的功能的一个集合。一旦类实现了接口,类就可以支持接口所指定的所有属性和成员。声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。

所以接口不能实例化,不能有构造方法和字段;抽象方法只能是public的,不能设置为private活着protected类型;即使是abstract何final修饰符也不能修饰接口中的抽象方法。而接口中保留了静态抽象方法。

实现接口必须实现接口中的所有的方法和属性。

一个类可以支持多个接口,多个类也可以支持相同的接口。

说白了,接口是抽象方法和静态常量定义的集合。接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。

关于抽象类和接口的区别

抽象类可以给出一些成员的实现,接口却不包含成员的实现,抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现,一个类只能继承一个抽象类,但可以实现多个接口等。

第一:类是对对象的抽象;抽象类是对类的抽象;接口是对行为的抽象。

也就是说接口是对类的局部行为进行的抽象,而抽象类是对类整体的抽象。

第二:如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,用继承抽象类。实现接口和继承抽象类并不冲突。

第三:从设计角度讲,抽象类是从子类中发现公共的东西,泛化出父类,然后子类继承父类,而接口根本不知子类的存在,方法如何实现还不确定,预先定义。

关于接口继承S

php5中类是单继承,但是接口很特殊,一个接口可以继承自多个接口,一个接口继承其它接口时候,直接继承接口的静态常量属性和抽象方法。

接口和接口之间继承要使用extends关键字。

类实现接口必须实现其抽象方法,使用实现关键字implements。

欢迎关注我的其它发布渠道