龙空技术网

老雷PHP全栈开发教程之类与面向对象学习

会玩AI 199

前言:

而今小伙伴们对“php5的构造函数和析构函数”都比较关怀,小伙伴们都想要知道一些“php5的构造函数和析构函数”的相关知识。那么小编同时在网上网罗了一些关于“php5的构造函数和析构函数””的相关知识,希望兄弟们能喜欢,姐妹们快快来了解一下吧!

老雷PHP全栈开发教程之类与面向对象学习

视频加载中...

一、面向对象概念

1.概念

面向对象(Object Oriented,OO)其是以对象模型为基础进行的抽象过程,并在应用过程中形成了描述自己的抽象概念定义,包括对象、类、封装、继承以及多态等。

2.面向对象的三大特性

1、封装

隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。

2、继承

提高代码复用性;

3、多态

父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

二、类与对象

类通过class声明

对象是类的实例化

class A{

public function cc(){

}

function aa(){

}

}

class girl extends A{

function aa($a,$b){

}

function dd(){

}

}

$a=new A();

类的元素

属性

常量 const constant = 'constant value'; A::constant;

static 静态属性和方法

构造函数和析构函数 __construct() __destruct exit();

方法

实例化 new A();

继承 extends

三、访问方法

$this->

self::test();

parent::test();

A::static_test();

四、访问控制与类型

public 公有的 都可访问

private 私有的 不可访问 不可继承

protected 受保护的 不可访问 可继承

static 可以直接使用 class::static 不能使用this self::

final 如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为 final,则不能被继承。

五、抽象类

PHP支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的。被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现。

继承一个抽象类的时候,子类必须定义父类中的所有抽象方法;另外,这些方法的访问控制必须和父类中一样(或者更为宽松)。

六、对象接口

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

接口中定义的所有方法都必须是公有,这是接口的特性。

要实现一个接口,使用 implements操作符,类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。

####接口和抽象类的区别:

(1)抽象类可以有构造方法,接口中不能有构造方法。

(2)抽象类中可以有普通成员变量,接口中没有普通成员变量

(3)抽象类中可以包含静态方法,接口中不能包含静态方法

(4) 一个类可以实现多个接口,但只能继承一个抽象类。

(5)接口可以被多重实现,抽象类只能被单一继承

(6)如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

七、Trait

Trait 是为类似 PHP 的单继承语言而准备的一种代码复用机制,通过use关键字引入到类中。

从基类继承的成员会被 trait 插入的成员所覆盖。优先顺序是来自当前类的成员覆盖了 trait 的方法,而 trait 则覆盖了被继承的方法

通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。

八、匿名类

PHP 7 开始支持匿名类。 匿名类可以在直接使用的地方创建一次性的简单对象。

九、对象复制

对象复制可以通过 clone 关键字来完成(如果可能,这将调用对象的 __clone() 方法)。对象中的 __clone() 方法不能被直接调用。

在多数情况下,我们并不需要完全复制一个对象来获得其中属性。但有一个情况下确实需要:如果你有一个 GTK 窗口对象,该对象持有窗口相关的资源。你可能会想复制一个新的窗口,保持所有属性与原来的窗口相同,但必须是一个新的对象(因为如果不是新的对象,那么一个窗口中的改变就会影响到另一个窗口)。

十、对象和引用

在 PHP 5,一个对象变量已经不再保存整个对象的值。只是保存一个标识符来访问真正的对象内容。 当对象作为参数传递,作为结果返回,或者赋值给另外一个变量,另外一个变量跟原来的不是引用的关系,只是他们都保存着同一个标识符的拷贝,这个标识符指向同一个对象的真正内容。

十一、类的自动加载

spl_autoload_register() 函数可以注册任意数量的自动加载器,当使用尚未被定义的类(class)和接口(interface)时自动去加载。通过注册自动加载器,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。

课后练习

实现一个关于人的接口 抽象类 基础类 继承类。

五官接口

打扮

男孩

女孩

标签: #php5的构造函数和析构函数