PHP学习笔记之PHP面向对象(八)

常用格式

1.定义类

    class name{}

2.创建对象(实例化)

    $obj = new name();

3.访问对象中的成员

    $obj->attr;

4.const常量

可以在类中定义常量,即不会在类中改变的值.对于从该类实例化的任何对象来说,常量值在这些对象的整个生命周期中都保持不变

    echo self::PI;//类内部访问
    echo 类名::PI //类外部访问

5.static静态属性与静态方法

使用 static 关键字可以用来标识成员属性,也可以用来标识成员方法,静态成员属于类所有,所以我们在静态方法里,不能使用 $this来引用静态成员

    //定义一个名为Person的类
    class Person{
        //设置常量attr为"常量"
        const attr = "常量";
        //设置静态变量$name为"aaa";
        static $name = "aaa";
        //设置公开变量 $age为"18";
        public $age = 18;
        //设置该类的show函数
        function show(){
            //输出常量attr 必须用 self::attr 的方式
            echo self :: attr
            //输出静态变量$name 也必须用self::$name的方式
            echo self :: $name
            //输出该类的一个公开变量
            echo $this -> age;
        }
    }
    //定义$obj为一个Person类
    $obj = new Person();
    //执行$obj的show()函数
    $obj -> show();
    //错误的输出常量方式
    //echo $obj->attr;
    //正确的输出常量方式
    //echo Person::attr;
    //输出类的公开变量,直接用->访问
    echo $obj->age;
    //输出类的静态变量
    echo $obj::$name;
    //输出类的所有属性
    echo Person;

构造函数和析构函数

构造函数

通常用来对成员属性进行初始化赋值

    __construct($name,$age);

析构函数

与构造函数对应的就是析构方法,析构方法允许在销毁一个类之前执行一些操作或完成一些功能,比如说关闭文件,释放结果集等.析构函数不能带有任何参数,其名称必须是

    __destruct()
//定义类
class Person{
    //该类的构造函数
    function __construct($name,$age){
        $this->name = $name;
        $this->age = $age;
    }
    //该类的show函数
    function show(){
        echo "姓名:$this->name"."<br>年龄:$this->age";
    }
    //该类的析构函数,造所有操作完成时触发
    function __destruct(){
        echo "完成";
    }
}
$obj = new Person("abc",18);
$obj->show();
$obj->show();
$obj->show();
$obj->show();
$obj->show();
//最后一个show()执行完之后析构函数会执行
$obj->show();

访问修饰符(作用域描述符)

访问修饰符允许开发人员对类的访问进行限制,这是PHP5的新特性

public公共修饰符

类的成员将没有访问限制,所有的外部成员都可以访问(读写)这个类成员

private私有修饰符

被修饰为private的成员,对于同一个类里地所有成员是可见的,即没有访问限制;但对于该类的外部代码是不允许改变甚至读操作,对于该类的子类,也不能访问

protected 保护修饰符

被修饰为protected的成员不能被该类的外部代码访问.但是对于该类的直接子类有访问权限,可以进行属性,方法的读写操作.被子类继承的protected成员,在子类外部同样不能被访问

class Person{
    public $name = "abc";
    private $age = 18;
    protected $a = 123;
    function show(){
        echo $this -> name;
        echo $this -> age;
        echo $this -> a;
    }
}
$obj = new Person();

//public是公开的,外部也可以访问
echo $obj -> name;
//private是私有的,外部不能访问
echo $obj -> age;
//protected受保护的,外部不可访问
echo $obj -> a;

//extends创建person类的子类son
class Son extends Person{
    function show2(){
        echo $this -> name;
        //继承父级私有变量,无法访问
        //echo $this -> age;
        echo $this -> a;
    }
}
$son = new Son();
$son ->show();

封装

封装就是把对象的属性和行为结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节

继承

面向对象开发方法建立在继承概念的基础上,这种策略提高了代码的重用性。

在PHP中,类继承通过 extends 关键字实现;

继承自其他类的类称为子类(child class 或 subclass)

子类所继承的类称为父类( parent class) 或 基类 (base class)

多态

对象的多态性是指在父类中定义的属性或行为被子类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或行为在父类及其各个子类中具有不同的语义。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章