php面向对象

作者: 马大哈tt | 来源:发表于2017-11-25 15:52 被阅读0次

    面向对象在很多语言,如c,java,c++,c#等语言中都有,它与面向过程的区别在于:面向过程实现功能时使用几十个代码块,而面向对象可以使用一个广泛的代码块实现功能。
    在分享php的面向对象之前我们先来看看js的面向对象,他们的写法都相同之处,我们可以对比着学习。

    js的面向对象

    js的面向对象首先定义一个函数,函数名首字母要大写,是习惯规定。传入参数,函数里面的this指向这个函数,定义函数的name,age属性,也可以定义一个函数。然后实例化对象,传参传入相应的值,js还可以直接用 对象名.属性 来设置属性。

    
    function Mylover(name,age){
            this.name = name;
            this.age = age;
            this.shop = function(){}
        }
    // 创建一个对象
        var _mylover = new Mylover("wss",19);
    // 给对象一个属性like
    
        _mylover.like = "打游戏";
        console.log(_mylover);
    

    打印的Mylover对象如下:


    js.png

    php的面向对象

    1. 首先定义一个类
      使用public,protected,private来定义属性,类里面可以定义一个方法。
      构造函数: __construct前面是两个下划线,作用是:实例化的类的时候,会自动执行。一般用于类的初始化,比如给属性赋值
    // 定义对象 class
    class Student{
                  // 属性
            public $name;
            public $age;
            public $sex;
                    // 定义一个方法
            public function study(){
                echo "数学";
            }
                  // 构造函数 __construct
            public function __construct($name,$age,$sex){
                $this->name = $name;
                $this->sex = $sex;
                $this->age = $age;
            }
        }
    
    1. 实例化类
      $Student称为类Student的实例
    $Student = new Student("ltt","22","女");
    
    1. 对象的属性和方法
      使用 -> 符号执行对象的方法或者属性
    $Student->study();
    
    1. 类的继承
      上面定义了一个Student类,现在再定义一个大学生类,这个肯定有些属性和学生类相同,但肯定也有一些自己独特的属性,比如:学分(score)。
      使用 extends 关键字继承Student的类。析构函数里,继承Student类里的方法使用关键字 parent::这样Bigstudent就继承了Student里的$name,$sex,$age三个类。
    class Bigstudent extends Student{
            public $score;
            public function __construct($name,$sex,$age,$score){
                parent::__construct($name,$sex,$age);
                $this->score = $score;
            }
        }
    

    下面实例化Bigstudent
    Bigstudent是子类,Student是父类;子类:就是继承父类,通过继承,子类可以获得父类的属性与方法。

    $s1 = new Bigstudent("张三","男","18","80");
        $s1->study();
        echo $s1->name.$s1->sex.$s1->age.$s1->score;
    

    结果图:


    结果图.png
    1. public、protected、private
    • public 属于公开的属性,外部可以直接访问
    • protected 保护的 这是子类能访问到,但是外部不可以访问
    • private 私有属性 -只有类自己内部能操作

    相关文章

      网友评论

        本文标题:php面向对象

        本文链接:https://www.haomeiwen.com/subject/mgrcbxtx.html