🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
接口是什么? 使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。 接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。 什么时候用接口? 1、定规范,保持统一性; 2、多个平级的类需要去实现同样的方法,只是实现方式不一样 接口的特性: 1. 接口中定义的所有方法都必须是公有 2. 接口的方法默认是抽象的,所以不在方法名前面加abstract 3. 类中必须实现接口中定义的所有方法,否则会报一个致命错误 4. 接口可以定义常量,但不能定义成员属性,常量的定义和用法和类中常量一样,常量不能被子类或子接口所覆盖 5. 类可以实现多个接口(相当于把多个功能集于一身,如手机实现了小灵通、MP3、MP4的功能) 6. 接口也可以继承接口 7. 类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。 实例一: ~~~ // 声明一个接口 interface test { public function setVariable($name, $var); private function getHtml($template);// 提示错误,接口中定义的所有方法都必须是公有 } ~~~ 实例二: ~~~ // 声明一个接口 interface test { public function setVariable($name, $var); public function getHtml($template); } class a implements test{ public function setVariable($name, $var) { // TODO: Implement setVariable() method. } // 屏蔽该方法会提示错误 ,类中必须实现接口中定义的所有方法 /*public function getHtml($template) { // TODO: Implement getHtml() method. }*/ } ~~~ 实例三: ~~~ interface a { const b = 'Interface constant'; //public $b = ''; // 错误写法 接口不能定义成员属性 } // 输出接口常量 echo a::b; // 错误写法,因为常量不能被覆盖。接口常量的概念和类常量是一样的。 /*class b implements a { const b = 'Class constant'; }*/ ~~~ 实例四: ~~~ interface a { public function foo(); } interface b { public function bar(); } // 类可以实现多个接口 class d implements a, b { public function foo() { } public function bar() { } } ~~~ 文章来源: https://www.cnblogs.com/minigrasshopper/p/7754512.html http://blog.csdn.net/u014222774/article/details/54880006 http://www.php.net/manual/zh/language.oop5.interfaces.php