• PHP------面向对象的特性


                                                              面向对象的特性

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

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

    二、封装

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

    所以,封装的特性,

    目的:让类更加安全

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

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

    【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);//输出对象,看看这个值有没有赋进去

     

     

     

     

  • 相关阅读:
    unitty导出工程嵌入iOS原生工程中出现黑屏,但是模型还是可以扫。
    unity导出工程导入到iOS原生工程中详细步骤
    多目标损失中权重学习
    变分推断
    RNN笔记
    Logistic Regression
    决策树
    无约束问题的最小化
    线性回归
    高斯分布相乘、积分整理
  • 原文地址:https://www.cnblogs.com/yuyu1993/p/5562346.html
Copyright © 2020-2023  润新知