PHP 面向对象高级:接口 1 个改进

一、抽象类和接口类的异同

对比:

抽象类 接口类
类中至少有一个抽象方法,也可包含非抽象方法 类中全部为抽象方法,接口抽象方法为public,前面不用加abstract
可以使用各种成员属性 只能使用成员属性为常量const

共同点:

  • 本身不能被实例化,必须继承或者引用

  • 继承和引用后,抽象方法必须重载才能实例化

二、语法

抽象的关键字是abstract,而接口的关键字是interface

interface 接口名称{ // 常量成员 // 抽象方法 }

继承接口,使用implements关键字。

单继承:

class 类名 implements 接口一 { // 实现所有接口中的抽象方法 }

多继承:

class 类名 extends 父类名 implements 接口一, 接口二, ..., 接口 n { // 实现所有接口中的抽象方法 }
  • 接口中所有的方法都是抽象方法

  • 在使用 implements 关键字继承接口的同时,还可以使用 extends 关键字来继承一个类

  • 接口不能进行实例化操作,所以要使用接口中的成员,就必须借助子类。

三、代码示例

<?php interface Demo{ const NAME = '强子'; function fun1(); } interface Test{ public function fun2(); } class Father{ public function eating(){ echo '吃饭的光头强'.PHP_EOL; } } class Study extends Father implements Demo,Test { public function fun1(){ echo self::NAME.PHP_EOL; } public function fun2() { echo '写代码的光头强'.PHP_EOL; } } $obj = new Study(); $obj -> fun1();//输出:强子 $obj -> fun2();//输出:写代码的光头强 $obj -> eating();//输出:吃饭的光头强 echo Demo::NAME;//输出:强子
本文为 Wiki 文章,邀您参与纠错、纰漏和优化
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!