• PHP面向对象


    一、定义类 使用关键字class定义

    二、实例化对象  使用关键字new实例化对象

    三、类成员的添加和访问

    (1)类成员:属性、方法、常量

    (2)添加成员需要使用修饰符  public、protected、private

    (3)修饰符的作用范围

      public 类内类外子类

      protected 类内 子类

      private 类内

    (4)添加方法:如果方法前不带修饰符,默认带public;

    (5)添加常量:const 常量名;

      访问常量:类名::常量名;

      ::范围解析操作符

    四、类内部对象$this和内存原理

    $this是一个对象,指向实例化对象。当我们new实例化的时候,系统会给这个对象分配一个内存空间,内存空间分为栈内存和堆内存,将变量存在栈里,代码块存在堆里,然后堆的内存地址指向栈里的变量,如果再给栈中的变量赋值引用数据类型,内存地址就会被改变

    五、如果$a和$p指向同一个内存地址,它们是同一个对象,则改变一个则两个都会变

      需要用克隆解决这个问题 关键字clone;通过clone来复制一个一模一样的对象,这样它们就不是同一个对象了;

    六、构造函数和析构函数

    (1)构造函数:我们在声明类的时候就存在这个函数,用new实例化时,函数自动调用。

      public function __construct(){};

    (2)析构函数:用于释放new实例化的内存空间,如果不销毁,会增加系统性能负荷;

    new实例化时,系统会自动调用;销毁原则:先人后出。

    七、静态成员

    静态成员的添加:在成员属性或方法前加关键字 static

    静态成员的访问: 内部使用:self::$变量;或   类名::$变量;

            外部使用: 类名::$变量;

    八、面向对象的三大特征

    (1)封装:对外只提供可操作的方法,不会告诉你内部结构

    (2)继承 子类可以继承父类的属性和方法,但是是有限继承,

      public、protected、private三个修饰的属性都可以继承,public、protected两个

      修饰的方法可以继承,父类的常量可以继承

    (3)多态:php没有多态

      重载:当子类跟父类有个相同的方法时,子类的方法会覆盖父类的方法

    九、关键字:parent

    在继承中的子类有parent,可以访问父类的常量、方法、父类的静态属性,属性成员不能访问

    访问方式: parent::$静态属性、fn()、常量

    十、final  不可重载的

    (1)写在类前面 不许类被继承

    (2)写在方法和属性前 子类不能重载父类的方法

    十一、抽象类 abstract

    (1)抽象类不能被实例化

    (2)如果一个类里面有一个方法被声明为抽象类,这个类就得申明抽象类

    (3)只要这个方法被声明为抽象方法了,就不能写函数体,将函数后面的{}去掉,函数体由子类实现

    (4)在继承一个抽象类的时候,子类必须定义父类

  • 相关阅读:
    [JLOI2011]飞行路线 不同的算法,不同的悲伤
    洛谷 [USACO17OPEN]Bovine Genomics G奶牛基因组(金) ———— 1道骗人的二分+trie树(其实是差分算法)
    P3203 [HNOI2010]弹飞绵羊 —— 懒标记?分块?
    tarjan 题目汇总(含解析)
    P1262 间谍网络 (tarjan缩点 水过去)
    #1117. 编码 ( 字典树版 ) 题解分析
    一道并查集的(坑)题:关闭农场closing the farm
    四重解法---P1047 校门外的树
    一道搜索题【2013 noip提高组 DAY2 t3】华容道
    ●BZOJ 1499 [NOI2005]瑰丽华尔兹
  • 原文地址:https://www.cnblogs.com/panghexin/p/10681054.html
Copyright © 2020-2023  润新知