探讨PHP类的封装与继承

转载 2016年06月02日 11:04:32

封装

       把成员方法和成员属性封装到类中,隐藏属性和方法实现的细节,通过public、protected、private等限定类成员的访问权限,数据被保护在内部,只通过被授权的成员方法才可以操作,尽可能的对成员进行封装。

public:方法或者属性在任何作用域下都可以访问到,而且是默认的,如果没有为一个属性或方法指定访问修饰符,它将是public。
protected:本类和子类可以访问,外部对象不可以调用。

private:只能在本类访问,子类与外部对象都不可能调用。经过private标记的方法或者属性可以在继承类中重新定义,每一个类只能看到它自己定义的私有方法。

       这三个修饰符从作用范围上来讲应该像这样从大到小排序:public→protected→private之所以说是在作用范围上,是因为类把一些属性和方法进行了封装,这个封装就决定了数据的“可见性”,这样我们在类的外面不能够随意修改所定义的属性和方法而只能够进行调用,这就是封装的好处,同时也提高了安全性。

 

我们给出代码示例:
 
 class myClass{   

     public $public="Public";             //public属性

     protected $protected="Protected";    //protected属性
     private $private="Private";          //private 属性

     function say_Hello() {               //public属性  

        //只是举例说明,自行添加内容
     }  
  }

  $obj=new myClass();   
  echo $obj->public;   

  //echo $obj->protected;   
  //echo $obj->private;   
  

       通过运行以上示例我们得到一个“Public”,但当你把//echo $obj->private;的注释去掉时,你会得到一下如下的错误:Fatal error: Cannot access protected property myClass::$protected in E:apachehtdocsexamplefile.php on line 13。可以看到我们不能随意去访问类的属性定义,我们在“外面”是不知道这个类中到底有那些成员,因为这些成员对于其他的类可能是不可见的。当然如果我们一定要访问或者修改定义为“私有”的属性时,也可以使用PHP所提供的系统方法:_get()和_set()。
 

\
 

继承

       可以使一个类继承并拥有另一个已经存在类的成员属性和方法,被继承的类称为父类或基类,继承类为子类。通过extends关键字实现继承关系。通俗来说,要有继承就得有一个“根源”,这“根源”你可能想像你以后生了儿子或者女儿,他们会从你这里得到一些“东西(属性和方法)”,这样你的“后代”就是持有你(根源)所有的一些特征了。

产生“根源”类(父类或者基类)
语法:class father{
}


产生“后代”(子类)
语法:class son extends father{
}

PHP extends类继承示例代码:
  
class father{  
    protected $name;  
    function __construct($name){     //构造函数 
       $this->name=$name;   
    }   
 
    function work(){  
        echo "{$this->name}我在工作;
    }  
    function __destruct(){}      //析构函数

 
class son extends father{      //继承父类
    function play(){  
       echo "{$this->name}我在玩游戏;
    }       
}  
    
 $my_father=new father(“爸爸”);     //创建父类对象
 $my_father->work(); 

 $my_son=new son(“儿子”); 
 $my_son->work(); 
 $my_son->play();  


       解析:在父类father里,我们定义了一般的属性和方法,然后定义子类。你可能发现在子类里内是没有构造函数和析构函数的,因为子类是继承了父类的所有方法,所以可以调用$my_son->work(); 这就是PHP类的继承了。另外要注意:PHP不能多层继承,如:class A extends B extends C,这样的继承在PHP中是无效的,PHP里只有单继承,不能多继承,需要其他办法变相“实现”多继承。


原文地址: http://www.php100.com/html/dujia/2015/0107/8290.html

相关文章推荐

PHP类的封装与继承

封装: 把成员方法和成员属性封装到类中,隐藏属性和方法实现的细节,通过public、protected、private等限定类成员的访问权限,数据被保护在内部,只通过被授权的成员方法才可以操作,...

PHP面向对象之解说(封装,继承,多态,引用,【const,define】)

php面向编程入门之封装-继承-多态(第一部分)

1.封装 Public Protected Private 可用于修饰方法,也可修饰成员属性(变量) 案例1:  class Person { ...

陈力:传智播客古代 珍宝币 泡泡龙游戏开发第34讲:PHP 封装、继承、多态

封装就是把抽象出的数据和对数据的操作封装在一起,通过public、 protected和private进行修饰。继承可以解决代码复用,“重载”是类的多态的一种实现。贵阳网站建设的朋友必须要掌握php...

PHP基础教程十一之封装、继承、多态

本节讲解的内容 封装 继承 多态 重载 重写

PHP面向对象深入理解之二(封装、继承、多态、克隆)

1.封装  所谓封装就是隐藏内部实现细节,提供外部访问方式  将一系列私有的特征保存起来 class Person { private $ID; public funct...

PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)

面象对向的三大特点:封装性、继承性、多态性 首先简单理解一下抽象: 我们在前面定义一个类的时候,实际上就是把一类事物共有的属性和行为提取出来,形成一个物理模型(模版),这种研究问题的方法称为抽象一、封...

php 日志封装类

  • 2015年08月25日 10:51
  • 1KB
  • 下载

PHP写的memcached增删改封装类

  • 2014年07月31日 15:30
  • 647B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:探讨PHP类的封装与继承
举报原因:
原因补充:

(最多只允许输入30个字)