PHP面向对象(OOP)

2018-03-04  本文已影响0人  winjin


class Test {

    public $attr;    // 可以被外部访问,可以被继承;

    protected $attr;    // 不可以被外部访问,可以被继承;

    private $attr;    // 不可以被外部访问,不可以被继承;

    public function __construct($params){

         // 创建一个对象时,会自动调用构造函数,完成一些初始化工作

         $this->$attr = $params;       

    }

    public fucntion foo1() {

          echo 'I'm function foo1 in classTest';

    }

    protected fucntion foo2() {

          echo 'I'm function foo2 in classTest';

    }

    private fucntion foo3() {

          echo 'I'm function foo3 in classTest';

    }

    // 最终类:禁止被继承,只能被实例化;

    final fucntion foo4() {

          echo 'I'm function foo4 in classTest';

    }

}

// 类的实例化:

$obj = new Test('tt');    // new 一个对象

echo $obj->$attr;    // 调用类的属性

$obj->foo1();    // 调用类的方法

---------------------------------------------------------------

刚提到最终方法,还有最终类;其实还有抽象方法和抽象类;

抽象类:有抽象方法的类就是抽象类,抽象方法没有方法体,需要被重写;所以抽象类必须被继承;抽象类中还可以有一般方法;

拥有的成员属性全部为抽象或常量的、有且只有抽象方法的类叫做“接口”,使用关键词interface来定义接口;使用关键词implements来实现,并且必须全部方法都实现。

抽象类只能单继承,当一个子类需要实现的功能需要继承自多个父类时,就必须使用接口。

PHP的类有三大特性:封装、继承、多态;

封装性:让类更安全,体现在访问控制符的使用;

继承性:子类继承父类的一切(属性、方法),在子类中对父类的方法进行重写;

override——方法重写;    overload——重载,编辑多态

多态性:由于子类里面对父类的方法进行了重写,父类引用在调用方法的时候表现出的不同状态。

-----------------------------------------

static:静态的;带有static的属性是属于类自己独有的属性,其他的是对象可以有的属性。

上一篇 下一篇

猜你喜欢

热点阅读