PHP 面向对象 精华

面向对象编程(Object Oriented Programming) 是一种计算机编程架构,
OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,

:具有相同属性和功能的对象的抽象就是类
    对象的抽象是类, 类的具体化就是对象

对象:是系统中用来描述客观事物的一个实体, 是构成系统的一个基本单位。

面向对象编程三大特性:封装、继承、动态

封装:把对象的属性和方法结合成一个独立的相同单位, 并尽可能隐蔽对象内部细节。

继承:子类自动共享父类的数据结构和方法的机制,是类之间的一种关系

  多态:把子类对象 赋值给父类的引用 再调用父类的方法 但是执行子类被覆盖父类的方法


访问类型:
  public 公开的

  protected 受保护的

  private 私有的


魔术方法:在某一时刻自动调动的方法
  __destruct 方法:析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行
  __construct 方法: 每次创建对象时先调用此方法
  __get 方法: 获取一个私有属性时 自动调用
  __set 方法: 设置一个私有属性时 自动调用
  __isset 方法: isset某一个私有属性时 自动调用
  __unset 方法: unset某一个私有属性时 自动调用
  __toString 方法: 可以让一个类决定它如何转换成一个字符串  在直接输出对象时 自动调用
  __clone 方法:  在clone 一个对象时 自动调用  复制对象 是对象引用, 克隆对象, 是新建一个新的对象
  __call 方法: 调用对象方法不存在时, 自动调用
  __autoload 方法: 在加载类的时候(实例化类时候) 自动调用 写在其他文件
  serialize 函数 序列化数据
  unserialize 函数 反序列化数据
    序列化的使用
    第一种:对象在网络中传输的时候;
    第二种:将对象写入文件或者是写数库时;
  __sleep 方法:在对象序列化时 自动调用 可以将对象一部份序列化
  __wakeup 方法:在对象反序列时 自动调用

final 只能用于定义类和方法
final 作用:类不能被继承, 方法不能重载

static 使用类访问或赋值, 对象不对直接访问
使用方法  类名::成员[属性,方法]
自身类 self::成员
用static 声明方法里面不能使用非静态成员


const 是一个类里面定义成员属性为常量的关键字
类名::成员属性
员能修饰属性
只有在声明的时候给初使值

抽象方法:没有方法体的方法。 没有大括号{}没有方法内容 用abstract 修饰
例如:abstract function sun();
抽象类:如果一个类里面有一个方法是抽象的;
注意:抽象类不可以被实例化,可以使用子类继承抽象类, 再实例化子类,子类需要重载所有抽象方法
作用:定义规范/抽象类相当于一个规范

接口:是一种特殊的抽象类, 接口里的同方法全部需要为抽象方法
接口里的抽象方法 前面不需要加abstract 关键字修饰
abstract class demo{    //抽象类
  可以有成员属性
  可以有普通方法
  至少有一个抽象方法
}

interface demo{        //接口类
  所有的成员属性必须是常量
  所有的方法都是抽象的
  所有的成员都必须是public
}
接口作用:也是一种规范

类实现接口使用implements 关键字, 而不是extends
接口继承接口还是使用extends
继承和接口可以一起使用 但要先继承后实现
实现多个接口使用逗号“,”隔开

多态:把子类对象 赋值给父类的引用 再调用父类的方法 但是执行子类被覆盖父类的方法

原文地址:https://www.cnblogs.com/ybbqg/p/2530498.html