php面向对象视频笔记之第二章(面向对象初步)

来源:互联网 发布:mac 写入移动硬盘 编辑:程序博客网 时间:2024/05/13 21:53
一、面向对象编程三大特性之封装
1、概念:封装性是面向对象编程中的三大特性之一,封装性就是将对象的状态信息(属性)和行为
(方法)捆绑为一个逻辑单元。只保留有限的对外接口使之与外部发生联系。
2、特性:对象以外的部分不能随意存取对象的内部数据(属性),从而有效的避免了外部错误对它
的“交叉感染”,使错误能够局部化,大大减少查错和排错的难度。
3、php封装优势
php中通过将数据封装、声明为私有(private),再提供一个或多个公开的(public)方法实现对其
属性的操作,以实现下述目的:
3-1、隐藏一个类的实现细节;
3-2、防止对封装数据的未经授权的访问。使用者只能通过事先定制好的方法来访问数据,可以方便
地加入控制逻辑,限制对属性的不合理操作;
3-3、有利于保证数据的完整性;
3-4、便于修改,增强代码的可维护性。
二、面向对象编程三大特性之继承
子类 extends 父类(基类或超类){ code }。实现对类的复用。
子类可以继承父类的属性,方法,也可以重写父类的方法。
php是单继承的,一个类只可以继承一个父类。
在php中类的方法可以被继承,类的构造函数也能被继承。子类不能访问父类的私有属性和私有方法。

三、访问控制修饰符(public protected private)


1、在类的内部可以调用public、protected、private修饰的属性或方法;
2、在类的外部不能调用protected、private修饰的属性或方法,只有public修饰的可以访问。 
3、在子类中不能访问父类的由private修饰的属性或方法。
四、方法重载(overload)和方法重写(override)
1、方法重载(overload)
1-1、重载在一个类定义中,可以编写几个同名的方法,但是只要它们的参数个数不同,Java就会将它
们看做唯一的方法。一个类中的方法与另一个方法同名,但是参数个数不同,这种方法称之为重载方法。
1-2、php中不支持方法重载。但是可以模拟类似Java中的方法重载。
可以利用 func_num_args() 获取方法调用时的参数个数,func_get_args() 获取方法调用时的参数值,
返回一个数组。
2、方法重写(override)
2-1、重写就是子类重写了父类的方法;
2-2、子类中的覆盖方法不能使用比父类中被覆盖方法更严格的访问权限;(访问权限修饰符)
2-3、子类可以拥有与父类不同的参数数量;
2-4、构造函数重写。

五、this关键词
1、$this是一个伪变量,就是指当前对象(即谁调用就指向谁)。php中为解决变量的命名冲突
和不确定性问题,引入关键字“$this”表示其所在当前对象。
2、$this注意点
2-1、$this在构造函数中指该构造函数所创建的新对象;
2-2、在类中使用当前对象的属性和方法,必须使用$this->取值;
2-3、方法内的局部变量,不属于对象,不使用$this关键字取值;
2-4、局部变量和属性可以同名,但用法不一样。在使用中,要尽量避免这样使用,以免混淆。
六、self与parent
1、self关键词及用法
1-1、self是指向类本身,也就是self不指向任何已经实例化的对象,一般self用来调用类中的
静态属性或静态方法;
1-2、假如我们使用类里面静态(一般用关键字static修饰)的属性和方法,我们也必须使用self
来调用。还要注意使用self来调用静态属性必须使用::(域运算符号)。
调用方式如:(类名)self::静态属性/静态方法。
1-3、static修饰的方法中不允许使用this关键字。this可以调用static修饰的方法。
1-4、在类中 new self() <==> new 类名()。
2、parent关键词及用法
2-1、parent是指向父类的指针,可以用来调用父类的方法;
2-2、一般我们使用parent来调用父类的构造函数(parent::__construct())。
3、this/self/parent之间的对比


0 0
原创粉丝点击