




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JYPC第六讲第六讲 面向对象开发面向对象开发版权所有版权所有 计算机科学系软件教研室计算机科学系软件教研室Web程序设计程序设计目录目录v面向对象基础面向对象基础v对象的概念对象的概念v创建和使用类创建和使用类v类的结构与定义类的结构与定义v类成员类成员v访问修饰符访问修饰符v$this关键字关键字v构造方法构造方法v类的继承类的继承目录目录vparents:和和slef:关键字关键字v类常量类常量v静态成员变量和方法静态成员变量和方法v对象类型检测对象类型检测instanceofv类的多态性类的多态性v抽象方法与抽象类抽象方法与抽象类v接口的实现接口的实现面向对象基础面向对象基础v 面向对
2、象编程(面向对象编程(OOP)起源于)起源于20世纪世纪60年代,直到年代,直到20世纪世纪90年代才成为应用软件开发的主流,而如今从应用年代才成为应用软件开发的主流,而如今从应用软件时代过渡到软件时代过渡到Web,面向对象思想仍然具备极大的应,面向对象思想仍然具备极大的应用价值。用价值。v 面向对象开发方法包括面向对象开发方法包括 面向对象分析OOA 面向对象设计OOD 面向对象编程OOPv 了解了解OOP,先要理解数据抽象,数据抽象是一个基本的,先要理解数据抽象,数据抽象是一个基本的数据类型,以及在这个数据类型上可以实现的操作集合,数据类型,以及在这个数据类型上可以实现的操作集合,用户不用
3、关心这个类型是如何实现的,只需要知道该类型用户不用关心这个类型是如何实现的,只需要知道该类型上定义了哪些操作。上定义了哪些操作。面向对象基础面向对象基础v面向对象编程(面向对象编程(OOP)三大特点是:封装、继承)三大特点是:封装、继承和多态。和多态。v使用面向对象编程(使用面向对象编程(OOP)架构开发应用程序的)架构开发应用程序的优点:优点: 容易分发代码,方便系统二次开发 促进代码整洁及重用 促进可扩展性、代码弹性,以及适应性 适合于团队开发 OOP有很多设计模式可利用,可以直接再次利用和开发对象的概念对象的概念v理解理解“万事万物皆对象万事万物皆对象”创建和使用类创建和使用类v创建和使
4、用类的步骤:创建和使用类的步骤: 编写类的语句段 将要使用的对象的类文件包含到当前脚本中 在脚本中创建一个对象 使用新对象类的结构与定义类的结构与定义v类是对象的模板。在准备创建类之前,应该确定类是对象的模板。在准备创建类之前,应该确定项目中需要的对象属性和方法。项目中需要的对象属性和方法。v类的定义与结构类的定义与结构v类的实例化类的实例化$tempCar = new Mycar();类成员类成员v字段和方法是最重要的类成员类型。字段是数据字段和方法是最重要的类成员类型。字段是数据成员,方法是函数成员。成员,方法是函数成员。v字段字段隶属于类的变量隶属于类的变量 它可以是任何类型,无论是预定
5、义还是用户定义类型 和所有变量一样,字段用来保存数据 可以被写入 可以被读取class MyCarpublic $name; /定义一个名为name的字段类成员类成员v方法方法具有名称的可执行代码块,可以从程序具有名称的可执行代码块,可以从程序的很多不同地方执行,甚至从其他程序中执行的很多不同地方执行,甚至从其他程序中执行 返回类型,它声明了方法返回值的类型。如果没有返回值,默认不写 名称:方法的名称 参数列表:它由至少一对空的圆括号组成。如果有参数,它们被列在圆括号中间 方法体:它由一对大括号组成,大括号内包含执行代码 由function来声明类成员类成员访问修饰符访问修饰符修饰符修饰符含义
6、含义public表示该方法或字段可以在任何范围被调用表示该方法或字段可以在任何范围被调用protected表示该方法或字段可以在类中和继承的子类中被调用表示该方法或字段可以在类中和继承的子类中被调用private表示该方法或字段只能从类中调用,不能从继承类中调用表示该方法或字段只能从类中调用,不能从继承类中调用$this关键字关键字v在一个类中,在一个类中,$this是一个特殊的变量,并且只是一个特殊的变量,并且只能在类的内部使用,用以获取类中某个成员变量能在类的内部使用,用以获取类中某个成员变量的值。的值。v使用使用$this的格式如下的格式如下 $this-varnameclass MyC
7、arpublic $name;function Drive() echo”我正在开”.$this-name.”牌的车”;构造方法构造方法v构造方法的作用是初始化类的成员字段。构造方法的作用是初始化类的成员字段。v在在PHP5中,创建构造方法规定使用如下名称中,创建构造方法规定使用如下名称(注意,是两条下划线)(注意,是两条下划线) _construct()v如果在一个类中没有显示声明如果在一个类中没有显示声明_construct()构造方法,构造方法,PHP会自动生成默认的构造方法,该会自动生成默认的构造方法,该方法没有任何内容,它不接受任何参数。方法没有任何内容,它不接受任何参数。构造方法构
8、造方法name;echo”尺寸:”.$this-size;echo”颜色:”.$this-color;echo”价格:”.$this-price;echo”车型:”.$this-type;?$bieke=new MyCar();$bieke-name=“凯越”;$bieke-size=“410*180*170”;$bieke-price=“140000”;$bieke-color=“铂灰”;$bieke-type=“轿车”;$bieke-Drive();构造方法构造方法vQ & A 如何用构造函数来重写以上类?类的继承类的继承v面向对象编程(面向对象编程(OOP)的一大好处是,可以使用
9、)的一大好处是,可以使用类再次类再次”继承继承“已有的类,被继承的类称为父类已有的类,被继承的类称为父类或基类,子类将继承父类所有的方法和字段,因或基类,子类将继承父类所有的方法和字段,因此提高了代码的重用性,提高软件开发效率。此提高了代码的重用性,提高软件开发效率。v关键字:关键字:extends类的继承类的继承class Fatherpublic $money=“1000000”;public $horse=“别墅”;function Drive()echo”开宝马7系列车”;class Son extends Father/不定义任何方法和字段$temp = new Son();echo
10、 $temp-money;echo $temo-horse;$temp-Drive();parents:和和slef:关键字关键字vself:指当前类,通常用来获取静态成员、方法指当前类,通常用来获取静态成员、方法和常量和常量vparents:指的是父类和要调用的父类中的成员指的是父类和要调用的父类中的成员方法,也可以用来获取成员变量和常量方法,也可以用来获取成员变量和常量parents:和和slef:关键字关键字类常量类常量v类常量是定义在类中的常量,如果我们使用类常量是定义在类中的常量,如果我们使用const关键字来修饰该常量,那么该常量就被称关键字来修饰该常量,那么该常量就被称为类常量。
11、为类常量。v类常量定义就不能再进行赋值操作。类常量定义就不能再进行赋值操作。v类常量访问类常量访问 外部访问:类名:常量名称 内部访问:self:常量名称class Computerconst COMPUTER_TYPE = 1;const COMPUTER_FACTORY = “CN”;echo Computer:COMPUTER_FACTORY.”n”;静态成员变量和方法静态成员变量和方法v由由static关键字声明的成员变量和方法称为静态关键字声明的成员变量和方法称为静态成员变量和方法。成员变量和方法。v静态成员访问时不需要实例化类,而是直接访问,静态成员访问时不需要实例化类,而是直接访
12、问,格式如下:格式如下: 类名:静态成员变量 类名:静态方法名称v另:另:parent:和和self:同样适合静态成员变量和同样适合静态成员变量和方法。方法。对象类型检测对象类型检测instanceofv功能:检测当前对象是否属于某一个类的类型功能:检测当前对象是否属于某一个类的类型v返回值:返回值:bool逻辑值逻辑值类的多态性类的多态性v多态性概括:子类可以以父类的身份出现多态性概括:子类可以以父类的身份出现 抽象方法与抽象类抽象方法与抽象类v抽象类是一种不能被实例化的类,它主要用于为抽象类是一种不能被实例化的类,它主要用于为继承的子类定义界面,在抽象类里面的成员方法继承的子类定义界面,在抽象类里面的成员方法都是没有具体实现的方法。都是没有具体实现的方法。v采用采用abstract关键字来修饰。关键字来修饰。v如果抽象类的子类没有实现父类的全部方法,那如果抽象类的子类没有实现父类的全部方法,那子类也是抽象类,也不能被实例化。子类也是抽象类,也不能被实例化。接口的实现接口的实现v通过类的继承可以实现一个父子关系的描述,如通过类的继承可以实现一个父子关系的描述,如果要实现多重继承,就要使用接口果要实现多重继承,就要使用接口(interface),接口提供了多重继承的功能实),接口提供了多重继承的功能实现。现。v实现接口就必须实现接口中的所有方法。实现接口就必须实现接口中的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国防晒乳喷雾行业市场运行分析及发展前景与投资风险研究报告
- 2025-2030中国道路标记漆行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国车载AWP行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国超高清视频行业市场运行分析及前景趋势与价值评估研究报告
- 2025-2030中国赤铜矿行业市场发展分析及前景趋势与投资研究报告
- 2025-2030中国西瓜行业市场发展分析及发展趋势与投资研究报告
- 2025-2030中国花格砖行业市场深度调研及竞争格局与投资研究报告
- 2025-2030中国自动贴标机(打印和应用系统)行业市场发展趋势与前景展望战略研究报告
- 视频监控系统安装合同
- 2025-2030中国胡米拉行业市场发展趋势与前景展望战略研究报告
- 人民卫生出版社选题表
- 《大学生安全教育》教案-第十一课 预防激情犯罪
- Higg FEM 平台操作介绍
- 重庆外国语学校2024届化学高二第一学期期中综合测试模拟试题含解析
- 图形与坐标复习(评学科带头人)
- 九年级上册历史知识点复习课件(部编版)
- 脱碳塔CO2脱气塔设计计算
- 2022年四川省阿坝州中考物理真题及答案
- 香港汇丰银行大厦结构选型
- 房屋硬装装修合同范本
- 2023年东莞市人民医院医师规范化培训招生(放射科)考试参考题库含答案
评论
0/150
提交评论