• php-面向对象OOP


    类:定义一件事物的抽象特点。
    对象:类的 实例。
    成员变量 − 定义在类内部的变量。该变量的值对外是不可见的,但是可以通过成员函数访问,在类被实例化为对象后,该变量即可称为对象的属性。var关键字定义成员变量。
    多态:相同的函数或方法可作用于多种类型对象产生不同结果。
    封装:现实世界中存在的某个客体的属性和行为绑定在一起,并放置在一个逻辑单元中。
    构造函数:创建对象是初始化对象,为对象成员变量赋初始值,与new运算符一起使用在创建对象的语句中。
    定义类:

    
    class site(){
        /* 成员变量 */
      var $url;
      var $title;
      
      /* 成员函数 */
      function setUrl($par){
         $this->url = $par;
      }
      function getUrl(){
         echo $this->url . PHP_EOL;
      }
    }
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    类的变量使用 var 来声明, 变量也可以初始化值。
    函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。
    变量 $this 代表自身的对象。
    创建对象:

    $baidu = new site$taobao = new site;
    
    • 1
    • 2

    调用成员方法

    $baidu->setUrl('www.baidu.com');
    $baidu->getUrl();
    
    • 1
    • 2

    构造方法:

    function __construct($baidu){
        $this->url = $baidu;
    }
    
    • 1
    • 2
    • 3

    现在可以这样实例化对象

    $baidu = new site('www.baidu.com');
    //调用成员函数
    $baidu->getUrl()
    
    • 1
    • 2
    • 3

    方法重写

    // 从父类继承的方法不能满足子类时,可以对方法进行重写覆盖(override)
    function getUrl() {
       echo $this->url . PHP_EOL;
       return $this->url;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    访问控制:
    public 公有公有的类成员可以在任何地方被访问。protected 受保护受保护的类成员则可以被其自身以及其子类和父类访问。private 私有私有的类成员则只能被其定义所在的类访问。(继承类也不能访问)

    static关键字:
    声明方法或类属性为static,可以不实例化而直接访问。静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。

    Final关键字:
    如果父类中的方法被声明final,则子类不能覆盖该方法(重写);如果类被声明final则该类不能被继承。

    调用父类的构造方法:
    PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。

    
    class base{
        function __construct(){
            print "base类构造方法".PHP_EOL;
        }
    }
    
    class sub extends base{
        function __construct()
        {
            parent::__construct();// 子类不能自动继承父类构造方法
            print "子类sub的构造方法".PHP_EOL;
        }
    }
    
    // 调用base构造方法
    $obj1 = new base();
    // 调用base、sub构造方法
    $obj2 = new sub();
    ?>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    STM32嵌入式开发需要掌握硬件、嵌入式系统、C编程语言以及相关的外设驱动等知识
    使用sklearn报AttributeError: ‘NoneType‘ object has no attribute ‘split‘
    基于arcgis访问postgis的方法
    【我不熟悉的javascript】JSON.stringify和JSON.parse方法详解
    比较常见的在线项目管理系统有哪些?
    Transformer - 基础分析与实现
    微信小程序获取微信用户步数
    搭建微服务架构的电商平台系统
    wsl安装ubuntu的问题点、处理及连接
    冯诺依曼体系结构与进程的初步理解
  • 原文地址:https://blog.csdn.net/weixin_42124384/article/details/127878441