PHP的面向对象,几乎和Java一模一样,甚至就是一样的
例子:
// 1.接口
interface Human
{
public function breath();
}
// 2.抽象
abstract class Chinese
{
abstract function getLocation();
}
abstract class Shanghai extends Chinese
{
abstract function speak();
}
class Father extends Shanghai implements Human
{
// 3.声明属性的格式:var 属性名
var $name = 1;
// 4.构造方法
function __construct($name)
{
$this->name = $name;
}
function eat()
{
echo "I can eat food" . "<br>";
}
// 5.接口方法
public function breath()
{
echo "大口呼吸" . "<br>";
}
function getLocation()
{
echo "上海浦东" . "<br>";
}
function speak()
{
echo "上海话" . "<br>";
}
}
// 6.final修饰的类无法再被继承
final class Son extends Father
{
// 7.常量
const gender = '男';
// 8.静态变量
public static $school = "阳光幼儿园" . "<br>";
// 9.重写父类方法
public function eat()
{
// 10.类似Java中的super.eat();
parent::eat();
// 11.使用这种方式控制父类的属性
$this->name = 2;
echo "more eat" . "<br>";
}
public function play($people)
{
// 12.内部调用私有方法
$this->dress();
echo "play game with " . $people . "<br>";
}
private function dress()
{
echo "dress" . "<br>";
}
// 13.析构函数:实例被销毁的时候调用
function __destruct()
{
print "销毁 " . "<br>";
}
}
// 14.实例对象
$son = new Son("李四");
// 15.调用方法
$son->eat();
$son->play("张三");
$son->breath();
// 16.直接访问静态变量
echo Son::$school;
运行结果:
I can eat food
more eat
dress
play game with 张三
大口呼吸
阳光幼儿园
销毁
要注意一点的是:
PHP的类有构造方法和析构方法
构造方法,对象在实例化的时候调用,析构方法对象被销毁的时候调用
即便是在访问静态属性,对象也没有被销毁,直到访问静态属性结束后,类才被销毁