一.面向对象

1.面向过程:一个人分步骤完成某个事情

2.面向对象:某件事情拆分为多个任务,由每个对象独立完成,最后调用整合为一个完整的项目

3.三要素:继承、封装、多态。

封装:私有化属性 提供公共访问方法。(直接操作属性不可控。比如年龄赋值999)。

继承:子类对父类的特性的继承

多态:由于子类对父类方法的重写导致的调用同一个方法出现的不同结果就叫多态。

4.优点:易维护、易扩展、易复用

二、类与对象

关系:对象依存于类。一个对象可以隶属于多个类。

对象一般为不可拆分的个体,但一个类也可以是一个对象。比如有47名同学的一个班级,如果把班级作为一个班级类中的一个对象,则这个班级不能包括47个个人。

三、类(成员:属性和方法)

1.    定义类:class--定义一个类

  var--类中的属性的修饰符

  function--定义类中的一个方法

 //定义一个类
class human{
var $name = '';
var $age = '';
var $sex = '';
var $todo = '';
function showInfo(){
echo '姓名:'.$this->name.'<br>年龄:'.$this->age.'<br>性别:'.$this->sex.'<br>做了什么:'.$this->todo;
}
}

1.1类中的属性:

定义形式(var是public的别名,public正式):
  var  $v1 ;        //定义不赋值
  var  $v2 = 2;        //定义的同时赋值,值不能是变量,也不能是“计算表达式”
  public  $v1;
  public   $2 = 2;

使用形式:

$对象->属性名  //属性名前面没有$符号。

1.2类中的方法:

定义与之前的一样。

使用:对象名->方法名(参数)

方法前可以加修饰词:public,protected,priate,不写默认“public”

方法中的$this是一个“伪对象”,代表当前所属类的当前对象。

注意:一个类的变量初始化必须在构建函数里面进行,不能在变量声明时初始化。

2.    创建一个对象(四种方法)

 //1.直接new
$xiaohong = new renlei();
$xiaohong->name = '小红';
$xiaohong->age = 3;
$xiaohong->sex = '男';
$xiaohong->todo = '开炮';
$xiaohong->showInfo();
//2.可变类名
$lei = 'renlei';
$xiaoming = new $lei();
$xiaoming->showInfo();
//3.new self:在类的方法内部 代表类本身
$xiaogang= new renlei();
$lisi=$xiaogang->cself();
$lisi->showInfo();
//4.通过对象创建对象
$xiaogang = new renlei();
$xiaogang->name = "小刚";
$zhangsan = new $xiaogang;
$xiaogang->showInfo();
$zhangsan->showInfo();

3.对象的传值(值传递和引用传递--&)

4.一个系统函数:get_class(对象)--获得某个对象的“所属类名”——结果只是一个类名字符串

四、关键字static

1.定义时,在属性/方法前加上static,即可成为静态属性/方法。

2.静态属性和方法隶属于类本身,是所有对象的“共有数据”。

3.使用:类::$静态属性名  //双冒号,带$符号。

4.$this在静态方法中不能使用。(静态方法是类的,$this是对象的,有局限性,非静态方法也不可调用,同理)

五.构造方法/析构方法

特点:方法名固定,不定义也会自动调用

1.构造方法(__construct):创建对象时自动调用,例如:

 class human{
var $name = '';
function showInfo(){
echo $this->aa;
}
//构造方法 方法名固定 默认存在 且每次都会调用
function __construct($name){
$this->name = $name;
}
}
$person = new human('222');
$person->showInfo();

2.析构方法():销毁对象时自动调用。php代码执行结束会自动销毁对象,可用析构方法查看。

注意:析构方法不能调用,析构方法不能有形参。

手动销毁对象:unset($p1);

0604-面向对象、类与对象、类、static、构造方法/析构方法的更多相关文章

  1. php笔记(二)PHP类和对象之Static静态关键字

      PHP类和对象之Static静态关键字 静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用.静态属性不允许对象使用->操作符调用. class Car { pr ...

  2. 02.php面向对象——构造方法&析构方法

    <?php //自己写的构造方法 class Computer{ public function Computer(){ echo '构造方法'; } } new Computer();//这样 ...

  3. java基础:详解类和对象,类和对象的应用,封装思想,构造方法详解,附练习案列

    1. 类和对象 面向对象和面向过程的思想对比 : 面向过程 :是一种以过程为中心的编程思想,实现功能的每一步,都是自己实现的 面向对象 :是一种以对象为中心的编程思想,通过指挥对象实现具体的功能 1. ...

  4. Day07:常用模块,面向对象编程(对象&类)及内置函数

    今日内容:1.常用模块2.面向对象编程(*****)    介绍面向对象编程    类    对象3.内置函数------------------------------1.面向过程编程    核心“ ...

  5. java学习-初级入门-面向对象③-类与对象-类与对象的定义和使用1

    今天学习类与对象.先大致解释一下类与对象的含义. 对象:object 有物体这一概念,一切皆对象(物体),对象由静态的属性和动态的行为组成. 比如说水杯: 水杯的静态属性:材质,容量,质量,颜色 动态 ...

  6. 【C++】类和对象(构造与析构)

    类 类是一种抽象和封装机制,描述一组具有相同属性和行为的对象,是代码复用的基本单位. 类成员的访问权限 面向对象关键特性之一就是隐藏数据,采用机制就是设置类成员的访问控制权限.类成员有3种访问权限: ...

  7. python的类和对象——类成员番外篇

    学完了面向对象的三大特性,已经get了所有屌丝技能的我们也当一回文艺小青年,来看看类的成员和成员修饰符. 今天‘三’这个数字好亲和~~~类成员可以分为三类:字段.方法和属性 一.字段 首先我们来看看字 ...

  8. Java自学-类和对象 类属性

    Java的类属性和对象属性 当一个属性被static修饰的时候,就叫做类属性,又叫做静态属性 当一个属性被声明成类属性,那么所有的对象,都共享一个值 与对象属性对比: 不同对象的 对象属性 的值都可能 ...

  9. python的类和对象——类的静态字段番外篇

    什么是静态字段 在开始之前,先上图,解释一下什么是类的静态字段(我有的时候会叫它类的静态变量,总之说的都是它.后面大多数情况可能会简称为类变量.): 我们看上面的例子,这里的money就是静态字段,首 ...

随机推荐

  1. CDR软件-CorelDRAW软件下载,618活动

    618我有诚意,你呢? 不花钱的618,是残缺的618 给自己一个放肆shopping的机遇 活动力度不够大? 继续升级,终极体验 618疯狂倒计时! 同志们,如果你错过了之前的抢先购和升级活动 那么 ...

  2. VMware Workstation Pro 15 for Windows下载与安装

    VMware Workstation Pro 15 for Windows下载与安装 一.下载 下载地址:https://my.vmware.com/cn/web/vmware/details?dow ...

  3. zabbix 配置——bak

    1.host 配置 create host Parameter Description Host name 主机名,只允许数字,空格,句号,下划线,非主流符号它不支持.zabbix客户端配置文件中的h ...

  4. Beetl学习总结(1)——新一代java模板引擎典范 Beetl入门

    1. 什么是Beetl Beetl目前版本是2.7.0,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点.使得开发和维护模板有很好的体验.是新一代的模板引擎. ...

  5. nyoj 307

    /*这是一道最短路变形题 从每个有藏宝的地方为起点 求到各个点的可以的最大重量,相当于求出了从出口 到 一个藏宝点 所  允许的最大重量,把所有藏宝点的按重量 排序(从小到大)先到最小的藏宝点带上 宝 ...

  6. 调度器Quartz的配置文件中的线程池设置

    在使用调度器Quartz来进行数据归档的时候,当我们开的定时任务很多的时候,就会出现一些定时任务不会被触发的现象,这就是线程阻塞.那到底什么叫线程阻塞呢? 线程阻塞,顾名思义就是说线程被阻塞了,没有按 ...

  7. 【ACM】NYOJ_486_Old Calculator_20130725

    Old Calculator时间限制:1000 ms  |  内存限制:65535 KB 难度:1描述 szhhck have an old calculator bought 5 years ago ...

  8. K - Count the string kmp_Next数组应用

    It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ...

  9. [bzoj3339]Rmq Problem||[bzoj3585]mex_线段树

    Rmq Problem bzoj-3339||mex bzoj-3585 题目大意:给定一个长度为n的数列a,多次讯问区间l,r中最小的不属于集合{$A_l,A_{l+1}...A_r$}的非负整数. ...

  10. mongodb之用户/认证/角色/权限管理

    前言 用户权限管理很重要,只给需要的权限,防止应用系统漏洞导致脱库 认证和授权 Authentication 认证识别,解决我是谁 Authorization 操作授权,我能做什么 认证机制 MONG ...