陈广安个人网站
会写代码的咸鱼
陈广安个人网站阿里云盘资源
陈广安个人网站网盘资源搜索
“ 梦想还是要有的,万一实现了呢!”
— 马云

6.18-类-接口-命名空间

创建时间:2016-10-19

php面向对象

  • 类:抽象模板 | 对象:具体事物
  • 类只是具备某项功能的抽象模板,实际应用中还需要对类进行实例化,即对象
  • 类的特点:继承,封装,多态
  • 继承:通过继承可以创建子类和父类之间的层次关系,达到复用代码
  • 封装:类是属性和方法的集合
  • 多态性:不同的类进行同一操作可以有不同的行为

  • class 类名{成员属性=变量 成员方法=函数}

  • 构造函数:__construct()给类里面的属性值初始化,对象创建完后,会自动调用
  • 析构函数:__destrust()对类的属性已经内部资源进行销毁,对象调用后最后执行,会自动调用

  • 继承:extends 例子:clsaa 类名 extends 父类名{}

  • public 公有的,修饰的属性与方法,可在本类及子类的内部访问及外部访问
  • private 私有的,修饰的属性与方法,只能在本类的内部访问
  • protected 保护的,修饰的属性与方法,只能在本类及子类的内部访问
  • final 如果放在方法前,可以限制方法的重载/覆盖 | 如果放在类之前,可以限制类的继承
  • instanceof 用来检测对象是否由某类及某类的子类所实例化

  • 重载|覆盖:在子类中可以写跟父类同样的方法
  • 对象调用成员用 -> | 类调用成员用 :: 范围解析操作符
  • parent 表示父类————使用parent::访问父类中被覆盖的方法


————————————————————————————————————————————————————

php接口:interface —— PHP只支持单继承,如果想实现多重继承,就要使用接口

  • 声明一个接口:interface 接口名{ }
  • 接口不能实例化成一个对象
  • 所有的权限必须是公有的public,默认是公有的
  • 接口里面的方法必须都是抽象方法,可以在方法前面加abstract ,也可以直接大括号后面分号结束

  • 接口的一些细节
  • 1、接口的继承使用extends,让一个接口继承另一个接口
  • 2、接口继承接口,只有扩展新抽象方法,没有覆盖关系
  • 3、可以使用一个类实现接口的全部方法,也可以使用一个抽象类,来实现接口中的部分方法
  • 4、类与接口,抽象类与接口,覆盖,重写,实现接口中的抽象方法
  • 5、类与接口,抽象类与接口就不要使用extends这个关键字,使用implements实现,implements相当于extends
  • extends 继承(扩展),这个在PHP中,一个类只能有一个父类
  • 6、一个类可以在继承一个类的同事,使用implements实现一个接口(一定要先继承,再实现接口)
————————————————————————————————————————————————————

php命名空间:

  • 1、声明一个命名空间:namespace 自定义名称;
  • 2、在namespace声明命名空间的代码上面,不能有任何PHP代码和HTML内容输出(除了declare),声明命名空间只能是第一条

  • 1、是一种封装事物的方法
  • 2、主要用来解决类、函数、常量的命名冲突


————————————————————————————————————————————————————

php类的常量

  • const 常量名 = 值;————接口里面定义的属性必须是常量,不能是变量
————————————————————————————————————————————————————

抽象类

  • abstract 明确表示抽象类——抽象类:就是类的模板 是抽象的抽象
  • 定义抽象类: abstrcat class 类名{ }
  • 定义抽象方法: abstrcat function 函数名();————注意 抽象方法直接;结束,不用大括号

  • 如果一个类中,有一个方法是抽象方法,那么这个类就是抽象类
  • 抽象类中除了有抽象方法,其他跟正常定义的类完全一样

  • 抽象类不能直接实例化一个对象
  • 抽象类必须有子类去继承,将抽象类的抽象方法加上方法体,才能实例化一个对象
  • 子类继承抽象类,必须覆盖重写所有的抽象方法
————————————————————————————————————————————————————

php辅助函数