面向对象的特性
一、面向对象有三大特性:
封装、继承、多态。(非常重要,第一要记住!!!!!!!!!!)
二、封装
封装就是用来做类的,把一个类封装起来。做类不能随便的做。我们做类不能随便去写一个类,随便写一个类之后,别人可以在外界,通过对象就可以直接调用我们里面的成员,直接操作我们里面的成员,这样的话对于我们的类来讲,如果外界的直接操作我们的成员,那我们的这个类的安全性就低了,就说明我们做的这个类不安全了,外界可以随便访问,就不安全了,另外,类如果随便写写,直接拿对象直接调用,里面的成员属性或者成员变量,我就可以给它随便赋值,比如本来这个变量应该存的是整数,我给他赋了一个字符串,这样的话,这个类就乱了。
所以,封装的特性,
目的:让类更加安全
做法:不让外界直接访问类的成员
如何使类更加的安全的,具体做法:
【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了
//然后,在这个方法的里面,把这个值交给$mianling 的变量
// 在这个里面$this->nianling =$a; 为什么能访问的到nianling?????因为这是在这个类里面(在该类中可以访问到)
//这样就把a的值赋给$nianling的变量了,通过这个方法就可以赋给$nianling了
}
}
$r=new Ren();
$r->SetAge(18);//调用方法给nianling赋值 // SetAge方法
Var_dump($r);//输出对象,看看这个值有没有赋进去