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();
最后的结果如下: