转载:

/***

====笔记部分====

接口的具体语法:

0:以人类为, class Human 是人的草图

而接口 是零件

可以用多种零件组合出一种新特种来.

1: 如上,接口本身即是抽象的,内部声明的方法 默认也是抽象的.

不用加 abstract

2: 一个类可以一次性实现多个接口.

语法用 implements 实现 (把我这几个功能实现了)

class ClassName implements interface1,interface2,interface3 {

}

然后再把接口的功能给实现.

3: 接口也可以继承, 用extends

4:接口是一堆方法的说明,不能加属性

5:接口就是供组装成类用的,封闭起来没有意义,因此方法只能是public

***/

interface animal {

protected function eat();

}

interface monkey extends animal {

public function run();

public function cry();

}

interface wisdom {

public function think();

}

interface bird extends animal{

public function fly();

}

/*

// 下面有误,monkey继承的aniaml接口,因此必须要把eat()实现

class Human implements monkey,wisdom {

public function run() {

echo '走';

}

public function cry() {

echo '哭';

}

public function think() {

echo '思考';

}

}

*/

class Human implements monkey,wisdom {

public function eat() {

echo '吃';

}

public function run() {

echo '走';

}

public function cry() {

echo '哭';

}

public function think() {

echo '思考';

}

}

?>

//04.php

/***

====笔记部分====

面向对象的一个观点:

做的越多,越容易犯错

抽象类{就定义类模板}--具体子类实现{china,japan,english}

接口:

***/

// 抽象的数据库类

/*

创业做网站

到底用什么数据库? mysql, oracle,sqlserver,postgresql?

这样:先开发网站,运行再说.

先弄个mysql开发着,正式上线了再数据库也不迟

引来问题:

换数据库,会不会以前的代码又得重写?

答:不必,用抽象类

开发者,开发时,就以db抽象类来开发.

*/

abstract class db {

public abstract function connect($h,$u,$p);

public abstract function query($sql);

public abstract function close();

}

/*

// 下面这个代码有误

// 因为子类实现时, connect和抽象类的connect参数不一致

class mysql extends db {

public function connect($h,$h) {

return true;

}

public function query($sql,$conn) {

}

public function close() {

}

}

*/

/*

下面这个mysql类,严格实现了db抽象类

试想: 不管上线时,真正用什么数据库

我只需要再写一份如下类

class oracle extends db {

}

class mssql extends db {

}

class postsql extends db {

}

业务逻辑层不用改?

为什么不用改?

因为都实现的db抽象类.

我开发时,调用方法不清楚的地方,我就可以参考db抽象类.

反正子类都是严格实现的抽象类.

*/

class mysql extends db {

public function connect($h,$h,$u) {

return true;

}

public function query($sql) {

}

public function close() {

}

}

/*

接口 就更加抽象了

比如一个社交网站,

关于用户的处理是核心应用.

登陆

退出

写信

看信

招呼

更换心情

吃饭

骂人

捣乱

示爱

撩骚

这么多的方法,都是用户的方法,

自然可以写一个user类,全包装起来

但是,分析用户一次性使不了这么方法

用户信息类:{登陆,写信,看信,招呼,更换心情,退出}

用户娱乐类:{登陆,骂人,捣乱,示爱,撩骚,退出}

开发网站前,分析出来这么多方法,

但是,不能都装在一个类里,

分成了2个类,甚至更多.

作用应用逻辑的开发,这么多的类,这么多的方法,都晕了.

*/

interface UserBase {

public function login($u,$p);

public function logout();

}

interface UserMsg {

public function wirteMsg($to,$title,$content);

public function readMsg($from,$title);

}

interface UserFun {

public function spit($to);

public function showLove($to);

}

/*

作为调用者, 我不需要了解你的用户信息类,用户娱乐类,

我就可以知道如何调用这两个类

因为: 这两个类 都要实现 上述接口.

通过这个接口,就可以规范开发.

*/

/*

下面这个类,和接口声明的参数不一样,就报错,

这样,接口强制统一了类的功能

不管你有几个类,一个类中有几个方法

我只知道,方法都是实现的接口的方法.

*/

class User implements UserBase {

public function login($u) {

}

}

?>

php类使用场景,php类与对象得使用场景相关推荐

  1. 关于类成员函数中访问同类对象的私有成员

    关于类成员函数中访问同类对象的私有成员,主要包含以下几种场景: a. 在C++的类的成员函数中,允许直接访问该类的对象的私有成员变量. b. 在类的成员函数中可以访问同类型实例的私有变量. c. 拷贝 ...

  2. 7 面向对象(成员变量和局部变量的区别,类作为形式参数的问题,匿名对象,封装,private关键字,this关键字,构造方法,类的初始化过程,static关键字)

    1:成员变量和局部变量的区别(理解) (1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 (2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 (3)生命周期不同 ...

  3. 11:类和对象、类的属性、类的方法

    以下内容仅做自己学习使用,知识点内容来自柠檬班,转载请标记来源 @Author:木又 @File:demo01_类和对象.py @Time:2020/7/27 22:38 类的定义: class 类名 ...

  4. C++ 笔记(16)— 类和对象(类定义、类实例对象定义、访问类成员、类成员函数、类 public/private/protected 成员、类对象引用和指针)

    1. 类的定义 类定义是以关键字 class 开头,后跟类的名称.并在它后面依次包含类名,一组放在 {} 内的成员属性和成员函数,以及结尾的分号. 类声明将类本身及其属性告诉编译器.类声明本身并不能改 ...

  5. Object类 任何类都是object类的子类 用object对象接收数组 object类的向上向下转型...

    任何类都是object类的子类 用object对象接收数组 object类的向上向下转型 转载于:https://www.cnblogs.com/qingyundian/p/7744351.html

  6. python里的类与一切事物都是对象

    对于python,一切事物都是对象,对象基于类创建 列如 name='csdcs' li=[1,3,43] 上面两个都是对象,因为它们都是python中的 类里面存着许多的功能,功能的集合,     ...

  7. 从JVM看类的加载过程与对象实例化过程

    一. 类的加载过程 1. 类的加载过程大致是个什么过程? 我们编写产生.java文件,这些.java文件经过Java编译器编译成拓展名为.class的文件,.class文件中保存着Java代码经转换后 ...

  8. python类的实例方法必须创建对象前还是后可以调用_classmethod可以来调用类的属性,类的方法,实例化对象...

    classmethod可以来调用类的属性,类的方法,实例化对象,今天番茄加速就来讲一下. classmethod() classmethod 修饰符对应的函数不需要实例化,不需要 self 参数,但第 ...

  9. Python 的类其实是一个特殊的对象

    Python 中的类是一个特殊的对象. Python 中一切皆对象: class AAA:定义的类属于类对象. obj1 = AAA(): 属于实例对象. 在程序运行时,类同样会被加载到内存,类是一个 ...

  10. 类内的函数共享给对象使用

    1.为对象指定自己独有的属性 class OldboyStudent: school="oldboy" count=0 def __init__(self,x,y,z):#必须函数 ...

最新文章

  1. 麦肯锡报告摘译:未来成功城市的14个特征
  2. Android app内语言环境切换
  3. 声腔设计中无前腔的影响
  4. MapReduce基础开发之六Map多输入
  5. 数据分析师如何正确的提意见?(文末赠书)
  6. [转]Xdebug----Failed loading
  7. mysql - 内存表使用总结
  8. LeetCode 1338. 数组大小减半
  9. 代码规范 设计模式落地之路
  10. 读书笔记:《一生的计划》
  11. urllib3源码基本入门
  12. 蓝桥杯 ALGO-21算法训练 装箱问题 java版
  13. iOS $99 刀 开发者证书的申请步骤
  14. html5学习笔记6-- canvas
  15. 腾讯QQ之下载的安装包在哪里
  16. 正则化方法拟合曲线c语言,过拟合(Overfitting)和正则化(Regularized)
  17. mysql修改information_schema表时的错误
  18. 环境工程微生物学练习题
  19. 解决Only fullscreen activities can request orientation的方法
  20. 马克飞象的markdown语法和其它markdown语法的区别

热门文章

  1. emoji表情 与 iconfont 一锅炖
  2. 解决小米手机无法收到开机广播的问题
  3. Linux内核--1,2章
  4. 通过Samba实现Win/Mac访问Linux
  5. hdu 1163 ( 求n^n位根)
  6. linux 五种IO模型 简介
  7. golang mysql 基本操作
  8. golang slice 切片 追加、删除、插入
  9. golang 赋值错误 no new variables on left side of :=
  10. 使用IRP进行文件操作