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之间的对比
- php面向对象视频笔记之第二章(面向对象初步)
- php面向对象视频笔记之第三章(面向对象类特性)
- php面向对象视频笔记之第一章(面向对象基础)
- php面向对象视频笔记之第四章(接口与多态)
- php面向对象视频笔记之第五章(错误和异常处理)
- php面向对象视频笔记之第六章(反射机制与动态代理)
- PHP面向对象笔记
- php 面向对象 笔记
- PHP面向对象笔记
- PHP 面向对象笔记
- PHP面向对象(OOP)第二天
- PHP之面向对象
- PHP学习笔记之PHP面向对象(八)
- (部分伪)面向对象视频笔记
- 韩顺平php视频笔记62-67 php面向对象
- UML视频第二部分的总结之面向对象技术
- (九)、面向对象初步
- 软件工程视频之面向对象
- 基于http2的apns的push发送平台(使用go语言写的)
- 欢迎使用CSDN-markdown编辑器
- 判断手机和PC 的工具类等
- jdk绿色免安装版如何进行相关配置?
- Mysql双机热备配置
- php面向对象视频笔记之第二章(面向对象初步)
- java基础知识查漏 四
- 环形缓冲器 circular buffer, ring buffer
- Linux下所有命令不能用,因为不在PATH 环境变量中
- 软件测试基本概念-IMOOC笔记
- java程序中调用c语言库
- RxJava学习(一)
- JQuery知识点(一)
- VC6.0 Release 版本下调试运行设置