首页 > 技术文章 > 面向对象的特性

zzc134680 2016-06-08 15:23 原文

                                                       面向对象的特性

一、面向对象有三大特性:

封装、继承、多态。(非常重要,第一要记住!!!!!!!!!!)

二、封装

封装就是用来做类的,把一个类封装起来。我们随便写一个类之后,别人可以在外界,通过对象就可以直接调用我们里面的成员,直接操作我们的成员,这样对于我们的类来讲,安全性就低了。另外,类如果随便写写,直接拿对象调用里面的成员属性或者成员变量,我就可以给它随便赋值,比如本来这个变量应该存的是整数,我给他赋了一个字符串,这样的话,这个类就乱了。

目的:让类更加安全

做法:不让外界直接访问类的成员

如何使类更加的安全的,具体做法:

【1】 让成员变为私有

class Ren//定义一个人类

{   

var $nianling;  //它有一个年龄。这个年龄我不让外界直接访问,我要把它变成我这个类私有的。怎样变?就要用到访问修饰符。

}

访问修饰符,有三种:

(1)          public   公有的(所有的地方都可以访问的)

(2)          private    私有的(只有这一个类里,可以访问的到。它子类也访问不到)

(3)          protected   受保护的,(受保护的在什么情况下可以访问的到呢?在该类,还有它的子类里面可以访问的到)

也就是说,这三个,代表了三个权限。 

所以,把成员变为私有的怎么变呢??

  就是把var去掉,换成访问修饰符private

例子:

class Ren

{  

Private $nianling;  //私有成员。。现在$nianling就成了私有成员(私有成员外界是访问不到的)。

怎样访问不到呢??

$r=new Ren()

Echo $r->$nianling;  //我要访问这个里面的$nianling;的变量

我把它变为私有的了,还能访问的到吗??

}

例子:

 

显示结果:

显示结果报错了。 这个变量是个私有的,没法取访问它。

 

【2】 第二步:造成员方法,来操作变量

既然有nianling 它就肯定要求外界去操作它,给它赋年龄或取年龄,您如果让别人访问不到,这个nianling 就没有任何意义了。这nianling 还必须让别人访问的到,但是又不能直接访问,所以第二步就是:造成员方法,来操作变量。因为我第一步把它变成私有的了,就没法直接访问了,怎么办??要让它有意义就必须访问到,我就要造一个方法去它访问了。所以,第二步就是造一个方法。

     这个方法必须是一个公有的方法,公有的方法可以加public,也可以不加public,默认的您如果不加访问修饰符默认的就是public,所以可以加public,也可以不加,加上也没有错误。

 

class Ren

{

Private $nianling;

Public function SetAge($a)//做一个方法,去给$nianling 赋值 // SetAge 方法名  SetAge()要求用户传入一个值$a

{

 $this->nianling =$a;  //通过这个方法就可以赋给$nianling了

//然后,在这个方法的里面,把这个值交给$nianling 的变量

// 在这个里面$this->nianling =$a;  为什么能访问的到nianling?????因为这是在这个类里面(在该类中可以访问到)

//这样就把a的值赋给$nianling的变量了,通过这个方法就可以赋给$nianling了

 

}

}

$r=new Ren();

$r->SetAge(18);//调用方法给nianling赋值  // SetAge方法

Var_dump($r);//输出对象,看看这个值有没有赋进去

推荐阅读