• php面向对象之数据隐藏


    什么是数据隐藏?

    看到这个有的人会觉得挺不理解的。在前面的文章中,介绍类的时候,我们说定义变量用的关键词是public,但是不止这一个,还有public、private、protected、static和final,这些关键词是用来限定类成员,包括变量和方法的访问权限的。接下来,我们就先讲解前三个关键词的用法。大理石平台生产厂

    友情提示:

    对成员变量和成员方法进行限定在关键字的使用上都是一样的。所以这里我们只以成员变量为例说明这几种关键字的不同用法。对于成员方法同样适用。

    下面,我们来具体介绍这几个关键词:

    (1)public

    中文翻译是公共的。顾名思义,就是公开的,不需要隐藏的数据信息。可以在程序中的任何位置(类内、类外)被其他的类和对象调用。子类可以继承和使用父类中所有的公共成员。

    在讲解本章之前,我们定义变量和方法的声明都是用public,而所有的方法在默认状态下也是public,所以对变量和方法的调用显得十分混乱。为了解决这个情况,我们将要讲述第二个关键字private。

    因为之前都是用的public,所以这里我们就不举例子了。

    (2)private

    中文翻译为私人的,私有的。被private修饰的变量和方法,只能在所在的类的内部被调用和修改,不可以在类的外部被访问。在子类中也不可以。

    private实例展示:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    <?php

    header("content-type:text/html;charset=utf-8");

    class Preson{

       private $name = "雷克赛";

       public function setName($name){

           $this -> name = $name;

       }

       public function getName(){

           return $this ->name;

       }

    }

    class Preson1 extends Preson{

    }

    $preson = new Preson();

    //正确的使用方式

    echo '我的名字叫';

    $preson ->setName("布里茨");    //通过访问成员方法进行赋值

    echo $preson -> getName();      //在通过访问成员方法进行访问

    //错误的使用方式

    echo '我的名字叫';

    echo Preson :: $name;

    上述实例中,对私有变量$name的修改与访问,只能通过调用成员方法来实现。如果直接调用,就会发生错误。

    (3)protected

    中文翻译为保护的意思。private关键字可以将数据完全隐藏,除了在本类中,别的地方都不可以调用,子类中也不可以。但是有些情况是部分变量需要在子类中可以调用,但是对另外的类来说,还是要做到封装。这个时候就要用到我们的protected关键字了。

    用protected修饰的类成员,可以在本类和子类中被调用,但是在其他地方不能被调用。

    protected的实例展示:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    <?php

    header("content-type:text/html;charset=utf-8");

    class Preson{

       protected $name = '维克托';

    }

    class Preson1 extends Preson{

       public function showName(){

           echo '只有真确的调用,我才会出现';

           echo '<br/>';

           echo '我的名字是:' . $this ->name;

           echo '<br/>';

       }

    }

    $preson = new Preson1();

    $preson -> showName();

    echo '你调用错了,所以下面不报错算我输:';

    $preson -> name = '德莱文';

    上述实例中,先用关键词protected声明一个变量,然后再子类的方法中调用一次,最后在类外直接调用一次,结果一目了然。

    提示:

    虽然在PHP中没有对修饰变量的关键字做强制性的规定和要求,但从面相对象的特征和设计方面考虑,一般使用private和protected关键字来修饰变量,以防止变量在类外被直接修改和调用。

    以上就是php面向对象之数据隐藏的详细内容,

  • 相关阅读:
    Java EE javax.servlet中的ServletContext接口
    Java EE javax.servlet中的ServletConfig接口
    MD5加密工具
    redis常见数据操作
    Java文件上传与下载
    JSP技术
    spring集成swagger
    freemarker模板引擎的使用
    log4j生成日志
    Java自定义注解
  • 原文地址:https://www.cnblogs.com/furuihua/p/12083773.html
Copyright © 2020-2023  润新知