• 专注于网站建设,网络推广,关键词优化,SEO优化,专业的网站建设开发团队!
首页 > IT技术 > PHP > 内容

php面向对象的访问类型控制

2015-06-10 21:36:27   来源:叶景网络
    因为在PHP中不能存在同名的函数,所以在同一个类中也就不能定义重名的方法。这里所说的重载是指在子类中可以定义和父类同名的方法从而覆盖从父类中继承过来的方法。
    子类中重载父类的方法
    <?php
    class Person{
    public $name;      
    public function __construct($name="" ){
    $this->name =$name;
    }
    public  function say(){
    echo "我叫".$this->name  ; 
    }
    }
    ?>
    <?php
    class Student extends Person{
    public $name;              
    public function __construct($name=""){
    $this->name =$name;                                     
    }
    //这里定义了一个和父类中同名的方法,将父类中的说话方法覆盖并重写
    public  function say(){
    echo "我叫".$this->name .",今年25岁了" ; 
    }
    }
    ?>
    重写方法与访问权限
    子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限。
    如果父类中的方法的访问权限是protected,那么子类中重写的方法的权限就要是protected或者public;    如果父类中的方法是public,那么子类要重写的方法的权限就只能是public。也许这也就是为什么子类可    以继承父类的私有成员,但却不能使用的原因吧。
    重写时的参数数量
    子类可以拥有与父类不同的参数数量,如下面的构造方法中,多添加了一个参数$age。
    <?php
    class Student extends Person{
    public $name;   
    public $age;       
    public function __construct($name="",$age=25){
    $this->name =$name;
    $this->age =$age;
    }
    public  function say(){
    echo "我叫".$this->name .",今年".$this->age."岁了" ; 
    }
    }
    ?>
    构造函数重写
    上面提到的“重写时的参数数量”就已经实现了子类对父类的构造函数进行了重写,但这不是一种好的写    法,如果仔细观察,你会发现,上面子类Student对父类Person构造函数的重写,其实就是在父类的构造    函数的基础上多添加了一个参数,但是又把父类原有的参数照写一遍,因为父类Person的构造函数只有一    个参数,所以我们照写一遍不觉得有什么麻烦,但是如果参数不止一个,而是几个或者更多,那么你就会    发现它的繁琐之处,那么有没有办法可以简化这个问题呢?答案是肯定的,可通过使用"parent::方法名"    在子类的重载方法中调用父类中被它覆盖的方法。如使用"parent::__construct()"调用父类中被覆盖的    构造方法,其它方法的类似,于是上面的代码可以简化为:
    <?php
    class Student extends Person{
    public $name;   
    public $age;       
    public function __construct($name="",$age=25){
    parent::__construct($name,$age);
    $this->age =$age;
    }
    public  function say(){
    parent::say();
    echo ",今年".$this->age."岁了" ; 
    }
    }
    ?>
叶景网络,网络推广,网站建设
特别推荐RECOMMEND
搜索引擎网站关键词seo优化的意义
视频推广怎么做
网站seo优化怎么做关键词排上首页?
SEO介绍什么叫搜索引擎网站关键词优化
seo优化怎样做提升关键词排名
热点图文Hot
PHP通过soap调用.net接口asmx文件 PHP通过soap调用.ne
PHP开发环境配置 PHP开发环境配置
wamp集成环境的虚拟域名配置方法 wamp集成环境的虚拟
wamp独立安装配置 wamp独立安装配置
关注排行RANKING
1

PHP通过soap调用.net接口asmx文件

PHP通过soap调用.net接口asmx文件 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

2

PHP开发环境配置

PHP开发环境配置 下载PHP安装程序,并解压缩。(下载页面为http: www php net downloads php,下...

3

wamp集成环境的虚拟域名配置方法

wamp集成环境的虚拟域名配置方法 最近,发现身边很多人用wamp集成环境,这个虽然比较快捷,一步到位,但是只能访...

4

wamp独立安装配置

wamp独立安装配置 apache 中的 httpd conf LoadModule php5_module "D: lamp php5 php5apache2_2 dll " 加载模块并开启

5

php 获取今天明天昨天时间戳

php 获取今天明天昨天时间戳 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

6

PHP获取服务器信息 MySql版本和浏览器信息

PHP获取服务器信息 MySql版本和浏览器信息 1、$_SESSION[ PHP_SELF ] -- 获取当前正在执行脚本的文件名 2...

7

smarty 截取字符串函数 truncate的用法

smarty 截取字符串函数 truncate的用法 smarty truncate 截取字符串,从字符串开始处截取某长度的字符,默认的长度为8...

8

php编程常用函数方法等

php编程常用函数方法等 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网站...

9

如何让ThinkPHP的模板引擎达到最佳效率

如何让ThinkPHP的模板引擎达到最佳效率 默认情况下ThinkPHP框架系统默认使用的模板引擎是内置模板引擎。内置模板引擎支持模板文...