码迷,mamicode.com
首页 > Web开发 > 详细

php的面向对象相关特性

时间:2015-08-13 15:56:13      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:php   后台语言   面向对象   

php的面向对象与java类似,主要涉及类的声明、命名空间的使用、构造函数、静态成员、类的封装、类的继承、方法的重写等;


1)类的声明:创建[hello.php]

<?php
//声明一个类
class Hello{
    public function sayHello(){
        echo 'hello myphp';
    }
}

//一个文件中可存在多个类
class Desk{
    public function work(){
        echo 'work';
    }
}
创建[index.php]

<?php
require_once 'hello.php';
//创建实例
$h=new Hello();
//调用类内部的方法
$h->sayHello();

echo '<br/>';
$w=new Desk();
$w->work();
2)命名空间的使用:

首先创建[Demo.php],声明命名空间为ydzc,与[Hello.php]使用同样的类名

<?php

namespace ydzc;

class Hello{
    public function sayHello(){
        echo 'hello ydzc';
    }
}
在[index.php]中添加代码:

//用命名空间来区分名称相同的类
echo '<br/>';
require_once 'Demo.php';
$h2=new \ydzc\Hello();
$h2->sayHello();
3)构造函数、静态成员、类的封装

创建父类文件:[People.php]

<?php

class People {
    /**
     * @param int $age 年龄
     * @param string $name 名字
     * @param string $sex 性别
     */
    //创建构造方法
    public function __construct($age,$name,$sex){
        //echo 'construct a man';
        $this->_age=$age;
        $this->_name=$name;
        $this->_sex=$sex;
        if(People::$NUM>People::MAN_MAX_NUM){
            throw new Exception("不能创建更多的人");
        }

    }
    //成员方法
    public function getAge(){
        return $this->_age;
    }
    public function getName(){
        return $this->_name;
    }
    public function getSex(){
        return $this->_sex;
    }
    public function hi(){
        echo $this->_name.' say hi';
    }
    private $_age,$_name,$_sex;
    //静态方法,也称类方法,用来描述类的
    public static function sayHello(){
        echo 'hello People';
    }

    //静态变量
    private static $NUM=100;
    //静态常量
    const MAN_MAX_NUM=200;

}
在[index.php]中使用构造函数、静态成员

//构造方法:创建实例时就会执行的方法
echo '<br/>';
require_once 'People.php';
$p=new People(20,'jason','man');
echo 'age:'.$p->getAge();
echo '<br/>';
echo 'name:'.$p->getName();

//执行静态方法,不需要创建实例<pre name="code" class="php">echo '<br/>';
People::sayHello();//静态常量的使用for($i=0;$i<People::MAN_MAX_NUM;$i++){ new People(20,‘lily‘,‘woman‘);}

3)类的继承,方法的重写

创建子类文件[Man.php]

<?php
/**
 * 类的继承
 */
require_once 'People.php';
class Man extends People{
    public function __construct($age,$name){
        parent::__construct($age,$name,'男');
    }
    //方法的重写
    public function hi(){
        parent::hi();
        echo '<br/>';
        echo 'Man '.$this->getName().' say hi';
    }
}
在[index.php]中调用子类的方法

//使用类的继承
require_once 'Man.php';
echo '<br/>';
$m=new Man(30,'bruce');
$m->hi();

最后的结果如下:

技术分享






版权声明:本文为博主原创文章,未经博主允许不得转载。

php的面向对象相关特性

标签:php   后台语言   面向对象   

原文地址:http://blog.csdn.net/bboyjoe/article/details/47611921

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!