首页 / PHP study notes / PHP面向对象编程 / PHP初级面向对象编程:三大特性 封装、继承、多态

PHP初级面向对象编程:三大特性 封装、继承、多态

PHP面向对象编程的三大特性:

一、PHP面向对象封装性

封装性是面向对象三大特性之一,封装性就是把对象成员的属性和成员方法结合成一个独立的相同单位,并尽可能的隐蔽对象的内部细节。

封装的优点在于:相对于单个函数而言,PHP类可以对类的成员方法和成员属性进行private、protected、public关键词进行修饰。对于需要隐蔽的信息可以使用private和protected选择性的修饰,需要展示的部分可以使用public来修饰。

例如定义一个验证码类,首先创建画布,然后添加干扰信息,添加字母,最后输出验证码。这些创建画布,添加干扰信息,添加字母的过程我们不想让别人知道内部细节。那么这些过程我们可以使用private修饰。如下代码:

Class Code{

    //创建画布
    private function createCanvas(){
        echo "创建画布";
    }
    //添加干扰信息 点
    private function addDot(){
        echo "创建点";
    }
    //添加干扰信息 线
    private function addLine(){
        echo "添加线";
    }
    //添加字母
    private function addWord(){
        echo "添加字母";
    }
    //输出验证码
    private function output(){
        $this->createCanvas();
        $this->addDot();
        $this->addLine();
        $this->addWord();
    }
    //接口
    public function show(){
        $this->output();
    }

}
$code = new Code();
$code->show();

但是如果我们不想在对该类进行源码修改,又想修改其中的成员方法。那么我们可以通过extends关键字对class code进行继承。在继承后我们命名相同的function名字对class code中的成员方法进行重载。这就是面向对象编程的三大特性之一:继承。

二、PHP面向对象的继承性

PHP面向对象允许一个类拥有子类,并且该子类可以被新的子类继承。在子类中,父类的成员方法和成员属性可以使用$this关键字直接引用。

但是需要注意的是,类Code中使用private修改的成员方法要改成protected。因为private关键字修改的函数中,只能在本类中调用。而用protected修改的成员方法,可以被继承调用。如下,private,protected,public的特性:

关键字 特性
private 只能在本类中调用,不允许公共访问。
protected 可以在子类中调用,不允许公共访问。
public 任何类都可以调用,并且可以公共访问。

假设上述的Code类的私有属性已经被定义为protected,现在定义一个Children类。在该类中,所有和父类成员方法命名相同的函数都会对父类的成员方法进行覆盖,即对函数的重载。

class ChildrenCode extends Code{
    protected function createCanvas(){
        echo "子类,创建画布";
    }
    protected function addDot(){
        echo "子类:创建点";
    }
    protected function addWord(){
        echo "子类:添加字母";
    }
    protected function output(){
        $this->createCanvas();
        $this->addDot();
        $this->addLine();
        $this->addWord();
    }
    public function show(){
        $this->output();
    }
}

当我们实例化Children类,然后调用show()成员方法,输出的则是子类中成员方法的值。其中对父类方法的重载,即为PHP三大特性之一的多态。

三、PHP面向对象的多态性

多态通俗理解就是:不同的对象中同一个程序方法产生不同的反应。因为多态性必须有类的继承性才能构成多态性。

之后的笔记会对三种特性进行详细的解释。这里只是做简单的阐述。

声明:转载请注明原文地址及作者姓名。 作者:Glary Joker 文章地址://glaryjoker.com/article/2.html
上一篇:已经是最后一篇了

评论

登录后评论.