PHP自学计划-面向对象-18

2018-12-07  本文已影响8人  你缺少想象力

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的类有构造方法和析构方法
构造方法,对象在实例化的时候调用,析构方法对象被销毁的时候调用

即便是在访问静态属性,对象也没有被销毁,直到访问静态属性结束后,类才被销毁

上一篇 下一篇

猜你喜欢

热点阅读