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();
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/bboyjoe/article/details/47611921