博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php之接口概念
阅读量:4325 次
发布时间:2019-06-06

本文共 3604 字,大约阅读时间需要 12 分钟。

1 
think(); 65 66 67 1:接口本身即是抽象的,内部声明的方法默认也是抽象的 68 69 2:一个类可以一次性实现多个接口 70 语法用implements 实现 71 class ClassName implements interface1,interface2,interface3 {} 72 然后再把接口的功能给实现 73 74 3:接口也可以继承,也是用extends 75 76 4:接口是一堆方法的说明,不能加属性 77 78 5:接口就是供组装成类用的,封闭起来没有意义,因此方法只能是public 79 ***/ 80 81 interface animal { 82 public function eat(); 83 } 84 85 interface monkey extends animal { 86 public function run(); 87 public function cry(); 88 } 89 90 interface wisdom { 91 public function think(); 92 } 93 94 interface bird { 95 public function fly(); 96 } 97 //下面这是错误的,因为monkey继承了animal接口,因此必须要把eat()实现才行,Fatal error: Class Human contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (animal::eat) 98 /* 99 class Human implements monkey,wisdom{100 public function run() {101 echo '走';102 }103 public function cry() {104 echo '哭';105 }106 public function think() {107 echo '思考';108 }109 }110 */111 class Human implements monkey,wisdom{112 public function eat() {113 echo '吃';114 }115 public function run() {116 echo '走';117 }118 public function cry() {119 echo '哭';120 }121 public function think() {122 echo '思考';123 }124 }125 126 127 128 /***129 面向对象的一个观点130 做的越多,越容易犯错131 132 抽象类(就定义模板)--具体子类实现133 134 接口:135 136 137 ***/138 //抽象的数据库类139 /***140 创业,做网站141 用什么数据库?mysql,oracle,sqlserver,postgresql142 先开发网站,运行再说143 先弄个mysql开发着,真正上线了再改数据库也不迟144 145 引来问题:146 换数据库,以前的代码又得重写?147 148 答:不必,用抽象类149 开发者,开发时就以db抽象类来开发150 151 ***/152 abstract class db {153 public abstract function connect($h,$u,$p);154 public abstract function query($sql);155 public abstract function close();156 } 157 158 //下面代码有误,connect和抽象类的connect的参数不一致159 /***160 class mysql extends db {161 public function connect($h,$u) {162 return true;163 }164 public function query($sql,$conn) {165 166 }167 public function close() {168 169 }170 }171 172 173 ***/174 175 /***176 下面这个mysql类,严格实现了dn抽象类177 ***/178 class mysql extends db {179 public function connect($h,$u,$p) {180 return true;181 }182 public function query($sql) {183 184 }185 public function close() {186 187 }188 }189 /***190 试想:不管上线时,真正用什么数据库191 我只需要再写一份如下类192 class oracle extends db {193 }194 195 class sqlserver extends db {196 }197 198 class postgresql extends db {199 }200 201 业务逻辑不用改202 因为都实现的db抽象类203 204 我开发时,调用方法不清楚的地方,就可以参考db抽象类205 反正子类都是严格实现类的206 207 ***/208 209 210 /***211 接口就更抽象了212 213 比如一个社交网站214 215 关于用户的处理是核心应用216 217 登陆218 退出219 写信220 看信221 招呼222 更换心情223 吃饭224 骂人225 捣乱226 撩骚227 228 这么多的方法,都是用户的方法229 自然可以写一个user类,全包装起来230 231 但是,分析用户一次性使不了这么多方法232 233 用户信息类:{登陆,写信,招呼,更换心情,退出}234 用户娱乐类:{登陆,骂人,捣乱,示爱,撩骚,退出}235 236 开发网站前,分析出来这么多方法237 但是,不能都装在一个类里238 分成了2个类,甚至更多239 240 作为应用逻辑的开发,这么多的类,这么多的方法,都晕了241 242 243 ***/244 interface UserBase {245 public function login($u,$p); 246 public function logout();247 }248 249 interface UserMsg {250 public function writeMsg($to,$title,$content);251 public function readMsg($from,$title);252 }253 254 interface UserFun {255 public function spit($to);256 public function showLove($to);257 }258 259 /*260 作为调用者,我不需要了解你的用户信息类,用户娱乐类261 我就可以知道如何调用者2个类262 263 因为:这2个类,都要实现上述接口264 通过这个接口,就可以规范开发265 */266 267 268 269 /*下面这个类,和接口声明的方法的参数不一致,就报错270 这样,接口强制统一了类的功能271 不管你有几个类,一个类中有几个方法272 273 我只知道,方法都是实现的接口的方法274 */275 class User implements UserBase {276 public function login($u) {277 }278 }279 ?>

 

转载于:https://www.cnblogs.com/museluo/p/4673334.html

你可能感兴趣的文章
Android开发-之五大布局
查看>>
Math、Number、String 、Array、Object 的新 APIs
查看>>
浅谈STRUTS2
查看>>
Android 开发 学习网站
查看>>
spring启动quartz定时器
查看>>
poj -- 1042 Gone Fishing(枚举+贪心)
查看>>
经典C面试真题精讲
查看>>
Remove Duplicates from Sorted List解题报告
查看>>
到爱尔兰敲代码 / Come, Coding in Ireland
查看>>
ffmpeg格式转换命令
查看>>
CSS选择器 < ~ +
查看>>
用VS开发PHP扩展
查看>>
万方数据知识平台 TFHpple +Xpath解析
查看>>
Hive实现oracle的Minus函数
查看>>
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>
vs code调试console程序报错--preLaunchTask“build”
查看>>
蚂蚁金服井贤栋:用技术联手金融机构,形成服务小微的生态合力
查看>>
手机通话记录统计分析
查看>>
富文本编辑器比较
查看>>