码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象

时间:2018-06-04 20:38:17      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:静态   创建对象   调用   静态属性   决定   protect   on()   不能   引用   

一,传统的面向过程

将要完成的工作,分为若干个步骤,然后按步骤一步一步完成,最终完成整个工作

二,面向对象

将要完成的工作拆分为一个一个对象的任务,每一个对象独立完成自己的任务,最终完成整个工作

三,面向对象的基本概念

1,类与对象

类:用于描述某一些具有共同特征的物体的概念,是某一类物体的总称  例如:人类

一个类所具有的共同特征包括2个方面的信息:属性和方法

对象:指一个具体的物体,该物体隶属于某个类 例如:张三这个人  就属于人类

对象属于类,没有类就不能有对象

<?php
    //定义一个类
    class person{//类中的属性(就是变量)
    var $name = ‘张三‘;
    var $sex = ‘男‘;
    var $age = ‘22‘;
    //类中的方法(就是函数)
    function personFun(){
        echo ‘函数输出‘;
     }
     //类中有一些常量(类常量)
     const PI = 3.14;  
    }

可见类就是将一些变量和一些函数及一些常量用一个名字(类名)包起来的集合体,这些属性(变量),函数和常量隶属于该类,并且只能由该类及其创建出来的对象来使用

2,面向对象的语法

a,定义类:定义属性(变量) 定义方法(函数) 定义常量(类常量)

b,创建类的对象:$person1 = new person();person是上面代码的类名,此时$person1就是一个对象

c,使用对象

使用其属性:属性就是变量,也就是使用其变量

使用其方法:使用其函数

使用其常量

<?php
//定义一个类
class person{
//类中的属性(就是变量)   var $name = ‘‘; var $sex = ‘‘; var $age = ‘‘; //类中的方法(就是函数) function personFun(){ echo ‘姓名:‘.$this->name.‘<br/>性别:‘.$this->sex.‘<br/>年龄:‘.$this->age; } //类中有一些常量(类常量) const PI = 3.14; } $person1 = new person(); $person1->name = ‘张三‘; $person1->sex= ‘男‘; $person1->age= ‘22‘; $person1->personFun();

 输出结果:

技术分享图片

四,创建对象的基本形式

方式一,$对象名 = new 类名();  例如:$person1 = new person();

方式二:可变类名:

例如上面的代码:$people = ‘person‘; $person2 = new $people();

其中:方式以中的$person1和方式二中的$person2是一样的效果

方式三,$对象名 = new self;  self指类本身,该方法只能在类内部方法中使用

方式四:通过对象创建对象$person1 = new person(); $person3 = new $person1;

五,对象的传值(默认是值传递)

值传递

引用传递

技术分享图片

技术分享图片

技术分享图片

五,类中的成员

属性 方法 类常量

1.一般属性

属性就是放在一个类中的变量

定义形式:

形式一: var $v;//定义不赋值

形式二:var $v = 2;//定义并赋值,该值只能是一个直接量(常量),该值不能是计算表达式 或是变量

形式三:public $v;

形式四:public $v = 2;//var是public的别名,正式用public更好

2,一般方法

 

a,方法的定义和php中的方法定义是一样的

技术分享图片

方法前面可以加修饰符:public  protected private,省略不写时默认为public

b,方法中的$this关键字

$this是一个伪对象,代表当前所属类的当前对象

技术分享图片

总结:类是定义好的某些对象的模型

对象是根据模型所创建出来的具体物体,一个对象有哪些属性(数据),是由该类来决定的,一个对象可以做那些事情(方法),也是由该类决定的

c,一个系统函数get_class(对象)

作用:获取某个对象的所属类型 结果是一个类名字符串

技术分享图片

六,静态属性

定义静态属性时,前面要加关键字static

技术分享图片

静态属性和一般属性的差别:一般属性属于该类的某个具体对象,每个对象的属性的值不一定相同

静态属性属于类本身,其实他就是该类所有对象的共有数据

1,静态属性语法 类名::$静态属性名;

七,静态属性

方法前面加static

语法:类名::静态方法名();

技术分享图片

如果通过类名来调用静态方法,方法中不能出现$this,即$this在静态方法中不能使用

技术分享图片

静态方法中不能调用非静态方法

技术分享图片

self:代表当前类:只能在某个类的某个方法内部使用

技术分享图片

八,构造方法  构造方法是“创建”对象的时候会自动调用。

构造方法是类中的一个特殊方法,其作用是在实例化一个对象的同时,给对象的属性赋值,使之一创建完成,就具有了本身的特有数据(构造方法本身就存在类中)

1,该方法的方法名是固定的:__construct();

2,该方法只能是普通方法,不可以是静态方法

3,通常该方法是public

4,该方法中通常使用$this这个关键字来对属性进行赋值

5,当new 类名() 的时候,其实是在调用该构造方法

6,如果一个类中定义了构造方法,则实例化该类是就会调用该方法,且实例化时的参数要跟构造方法的参数一致

技术分享图片

九,析构方法 析构方法是“销毁”对象的时候会自动调用。

通常是在销毁对象时,来清理数据

析构方法通常不需要去定义

析构方法不能调用

析构方法不能有形参

析构方法中可以用于清理一些在php代码结束后不能清理的数据,如生成的文件。

 

面向对象

标签:静态   创建对象   调用   静态属性   决定   protect   on()   不能   引用   

原文地址:https://www.cnblogs.com/wfc139/p/9135231.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!