ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
接口的含义是:“对于实现我的所有类,看起来都是像我这个样子”,一个固定的接口,使用他的所有代码都知道对于那个接口会调用什么方法。 接口是一个抽象类的变体,接口中所有的方法都是抽象的 例如: ``` <?php /** * User: 三千 * Date: 16/3/30 * Time: 下午4:08 */ interface mobile{ //驱动方法 public function run(); } class plain implements mobile{ public function run(){ echo "这是飞机"; } public function fly(){ echo "这是飞"; } } class car implements mobile{ public function run(){ echo "这是汽车"; } } class machine{ function demo(mobile $a){ $a->fly(); } } $obj = new machine(); $obj->demo(new plain()); $obj->demo(new car()); ``` 返回结果: ``` changzuxindeMacBook-Pro% php 1.4.1.php 这是飞 Fatal error: Call to undefined method car::fly() in /Users/changzuxin/www/code/php_core/1.4.1.php on line 31 ``` 可以看到,第一个执行成功了,但是第二个执行失败了。 这段代码实际上是错误的,不符合接口语义。在PHP中,对plain实例进行检测时是可以运行的。也就是说在PHP里,只关心方法是否存实现,而不关心接口语义是否正确。 在java里,接口就是一种type,如果你打破了约定,那么你就是非法的,这符合逻辑也符合现实的世界。 这样做的好处就是,比如说我们对数据库进行操作的时候,不需要考虑是MySQL还是Oracle,操作缓存的时候,不需要考虑是文件缓存还是内存缓存,只需要实现写入、读取、清楚等功能点就行。 在大型项目中,会把代码进行分层和分工。核心开发人员开发流程和代码,基础人员通过这些接口来实现具体业务。