基本概念

  • 类(class):属性和方法的集合。(可以简单理解为带有函数的结构体)
  • 对象:类的实例化。
  • 三大特点:封装、继承、多态
    • 封装:对类的使用和实现分离,用户只需要掌握接口。
    • 继承:子类可以直接使用父类的属性和方法,简化了类操作,提高代码重用性。
    • 多态:同一个类的不同对象,使用同一个方法可以得到不同的结果。提高代码重用性和程序的灵活性。。

类的操作

声明

  • 定义类:权限修饰符 class 类名{类体;}
    • 权限修饰符:public private protected
    • 成员属性:也称成员变量,用于记录类的属性信息。php中可以为标量类型和复合类型。不能为空类型和资源。
    • 成员常量:关键字consteg.const PI = 3.14159。常量的输出可以不需要类的实例化类名::常量名
    • 成员方法:也称成员函数,同一般函数。

实例化

  • 对象的创建:$对象名 = new 类名([参数]);
  • 类成员的访问:$对象名->成员属性;$对象名->成员方法();
  • $this操作符:表示对变量本身的引用eg. \$this->属性; \$this->方法; 属性名前没有$

构造&析构

  • ​构造方法:对象创建成功后第一个被对象自动调用的方法。如果没有声明构造方法,系统会自动生成一个没有参数,且内容为空的构造方法,一个类只有一个构造方法。格式function __construct();
  • 析构方法:为创建对象的可选方法,一般是完成对象销毁前的清理工作。

封装

权限修饰符

  • public :可以在程序的任何地点被其它类和对象调用,子类可以继承父类的公共成员。
  • private:只能在所属类的内部被调用和修改,外部类(即使子类)不能调用修改。
  • protected:只有本类和子类可以调用它,其它地方不行。
  • ps:权限修饰符用于类定义前和成员声明前,如果省略权修饰符,默认为public

继承

  • 关键字extends:class 子类名 extends 父类名 { 类体; }子类可以拥有自己和父类的所有属性。
  • ::操作符:::可以在没有声明任何实例的情况下访问类成员。 用法:关键字 :: 变量/常量/方法;其中关键字有如下三种:
    • parent:调用父类成员
    • self:调用自身成员
    • 类名:调用此类的成员
  • 覆盖父类方法:在子类中对父类的同名方法进行重写,此方法必须和父类方法有相同的名称,参数,返回值。
  • 关键字static:用于修饰成员变量和成员函数。静态变量和静态函数可以不用对象而使用类名直接访问。静态变量相当于储存在类中的全局变量用法类名 ::$静态变量,静态成员可以在对象被销毁后继续保留,方便下一次调用;静态函数只能使用静态变量,类名:: 静态函数(...);

抽象类&接口

抽象类和接口是不能被实例化的特殊类。

抽象类

抽象类是不能被实例化的特殊类,只能作为其它类的父类使用。用法

abstract class 类名{
//抽象成员变量...
abstract function func1();
abstract function func2();
                   }

抽象类至少包含一个抽象函数;抽象函数没有函数体,只有声明(末尾加分号)其功能在子类中实现;

接口

php只支持单继承,要实现多重继承需要用到接口。

  • 声明
interface 接口名{
//成员常量
//抽象函数
				}

接口中不能声明变量,只能是成员常量和抽象函数所有的函数都必须在子类中实现,否则报错,接口的权限只能为public。

  • 用法class 类名 implement 接口1,接口2...{//抽象函数实现}

多态

  • 通过重写父类函数实现
  • 通过写不同的接口抽象函数实现

其它关键字&魔术方法

  • final:用于修饰类或成员函数,修饰类表示此类为最终版本,不可再有子类;修饰成员函数表示此函数不可被重写覆盖。
  • clone:用于对象克隆,$对象名 = clone $原对象名;
  • instanceof:用于检验某对象是否属于某个类obj_name instanceof class_name

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注