zoukankan      html  css  js  c++  java
  • 面向对象的特性

                                                           面向对象的特性

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

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

    二、封装

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

    目的:让类更加安全

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

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

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

  • 相关阅读:
    Spring 详解第三天
    Spring 详解第二天
    springmvc的运行流程分析
    Spring 详解第一天
    【Java面试题】40 你所知道的集合类都有哪些?主要方法?
    【Java面试题】39 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
    【Java面试题】38 Collection 和 Collections的区别
    【Java面试题】37 说出ArrayList,Vector, LinkedList的存储性能和特性
    【Java面试题】36 List、Map、Set三个接口,存取元素时,各有什么特点?
    【Java面试题】35 List, Set, Map是否继承自Collection接口?
  • 原文地址:https://www.cnblogs.com/zzc134680/p/5570206.html
Copyright © 2011-2022 走看看