版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章第三章 Java面向对象编程 2 回顾 q 一、Java数据类型 Java 中的数据类型分为两个类别:原始数据类型(基本数据类型)、 引用数据类型(复合数据类型) 数据转换有两种类型:自动类型转换和强制类型转换 q 二、Java标识符命名 检查下面这些是否是合法的变量名 变量命名的几点建议(知名取义、类名、静态属性,属性、方法) q 三、Java运算符(有哪些,运算规则) q 四、Java 支持控制语句编程结构:if,switch,for,while,do- while $lastnamediscount%zip codeint 3 本章目标 q 掌握类和对象的特征掌握类和对象的特征(重
2、点) q 理解抽象和封装理解抽象和封装(理解) q 理解对象与类之间的关系及差异理解对象与类之间的关系及差异(难点) q 掌握包的创建和导入掌握包的创建和导入(重点) q 理解继承及其特点理解继承及其特点(理解) q 运用运用JAVA程序实现继承(程序实现继承(重点) q 理解多态及其特点设计理解多态及其特点设计(理解) q 运用运用JAVA程序实现多态程序实现多态(理解) q 掌握访问修饰符和方法修饰符掌握访问修饰符和方法修饰符(难点) 4 程序发展阶段 q 面向对象是一个比较先进的设计思路,在之前实际上有种开发 设计,称为面向过程,也是程序发展的主要的两个阶段。其区 别在于: 用一个例子来
3、解释,如一个木匠要做一个盒子,那么做这个盒子的出 发点会有两种方式: 面向对象:先想好要做的盒子,之后再去找相应的工具去做。 面向过程:不去想要做什么样的盒子,随意取用工具。 q 面向过程:专著于解决问题 q 面向对象要经过完整的分析、设计之后才可以进行开发: 5 面向对象与面向过程的区别 q 面向过程面向过程注重于算法,通过函数把这些步骤一步一步实现,使用的时 候一个一个依次调用就可以了。 q 面向对象面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为 了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的 行为。 q 面向过程面向过程 优点:优点:性能比面向对象高,因为类调
4、用时需要实例化,开销比较 大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用 面向过程开发,性能是最重要的因素。 缺点:缺点:没有面向对象易维护、易复用、易扩展 q 面向对象面向对象 优点:优点:易维护、易复用、易扩展,由于面向对象有封装、继承、 多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易 于维护 缺点:缺点:性能比面向过程低 6 q 面向对象的程序开发实际上分三种 OOA(面向对象分析)是在一个系统的开发过程中进行了系统业务调查以 后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别。 OOA所强调的是在系统调查资料的基础上,针对OO方法所
5、需要的素材进 行的归类分析和整理,而不是对管理业务现状和方法的分析。 OOD (面向对象设计)是OO方法中一个中间过渡环节。其主要作用是 对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。 面向对象设计(OOD)是一种软件设计方法,是一种工程化规范。 OOP (面向对象编程面向对象编程)是一种计算机编程架构。OOP 的一条基本原则是计 算机程序是由单个能够起到子程序作用的单元或对象组合而成。 7 面向对象编程 OOP 目的在计算机程序中 模拟现实世界中的概念 在 OOP 中,现实世界的 所有事物全都被视为对象 能够在计算机程序中用类似的 实体模拟现实世界中的实体 是设计和实现软
6、件系统的主要方法 8 面向对象三个特征面向对象三个特征 1.封装:对外部是不可见的,它可以保护程序中的某些内容,封装:对外部是不可见的,它可以保护程序中的某些内容, 对外部提供某些接口。对外部提供某些接口。 2.继承:是用来扩展功能的,最低都是大于或等于父类的相继承:是用来扩展功能的,最低都是大于或等于父类的相 关功能。关功能。 3.多态:指一个方法只能有一个名称,但可以有多种状态,多态:指一个方法只能有一个名称,但可以有多种状态, 即程序中可以定义多个同名的方法。即程序中可以定义多个同名的方法。 9 oop的核心 q oop的核心是对象对象 q 对象表示现实世界的一个实体,它为不同的目的而存
7、在。 对象具有两个用途: 1.有助于了解现实世界 2.为计算机应用程序提供了应用基础 10 万事万物皆对象 q世界是由什么组成的? 名胜名胜 人人 物品物品 动物动物 ,植物,植物 什么是对象?什么是对象? 11 身边的对象 布兰尼布兰尼 朱丽叶朱丽叶 顾客顾客 姓名:朱丽叶姓名:朱丽叶 年龄:年龄:28 体重:体重:52千克千克 操作:操作: 购买商品购买商品 姓名:布兰尼姓名:布兰尼 职衔:收银员职衔:收银员 年龄:年龄:35 体重:体重:60千克千克 操作:操作: 收款收款 打印账单打印账单 12 对象的特征属性 q属性对象具有的各种特征 q每个对象的每个属性都拥有特定值 q例如:布兰尼
8、和朱丽叶的体重不一样 60kg 布兰尼布兰尼 属性属性 35岁岁 收银员布兰尼收银员布兰尼 13 对象的特征方法 q方法对象执行的操作 打单打单 收银收银 方法方法 刷卡刷卡 收银员布兰尼收银员布兰尼 14 对象的概念 对对 象象 面向对象编程的核心 为计算机应用程序提 供实用基础 完成特定任务 表示现实世界中的实体 “对象是存在的具体实体,具有明确定义的状态和行为。对象是存在的具体实体,具有明确定义的状态和行为。” 15 描述下列对象? q列出尼古拉斯凯奇驾驶的这辆法拉利F360 Spider的属性和方法 q列出小狗对象的属性和方法 属性:属性: 品牌:法拉利品牌:法拉利 型号:型号:F36
9、0 Spider 颜色:黄色颜色:黄色 价格:价格:380万元万元 方法:方法: 发动发动 停止停止 加速加速 属性:属性: 颜色:白色颜色:白色 方法:方法: 叫叫 跑跑 吃吃 16 小结1 q说一说教室里的对象 q描述他们的属性和方法 颜色:黑色颜色:黑色 品牌:品牌:BENQ 投影投影 姓名:张三姓名:张三 年龄:年龄:20 学习学习 类型:白炽灯类型:白炽灯 开开 关关 变亮变亮 变暗变暗 材制材制: 木质木质 支撑物品支撑物品 17 什么是“类” 抽取出下列对象的属性和方法的共同特征 顾客顾客 18 类 顾客类 轿车类 类是模子,确定对象将会拥有的类是模子,确定对象将会拥有的 特征(
10、属性)和行为(方法)特征(属性)和行为(方法) q类是对象的类型 q不同于int类型:具有方法 各种口味的球状冰淇淋各种口味的球状冰淇淋 球状冰淇淋模子球状冰淇淋模子 数据类型特征声明使用 基本数据 类型 没有 方法 int i= 8;i+; 引用数据 类型 具有 方法 Student stu = new Student(); stu.age +; 19 类的概念 q 类以共同特性和操作定义实体 q 类是用于组合各个对象所共有操作和属性的一种机制 形状类形状类 动物类动物类 汽车类汽车类 类的示例类的示例 “类是具有相同属性和行为的一组对象的集合类是具有相同属性和行为的一组对象的集合” 20
11、练习 q哪些是类?哪些是对象? 学校学校 大学大学 四川文理学院四川文理学院 21 小结2 q类和对象有什么区别呢? q类是抽象的概念,仅仅是模板,比如说:“人” q对象是一个你能够看得到、摸得着的具体实体,比如: “小布什” 小布什小布什 普京普京 克林顿克林顿 “人”类 特征(属性) 年龄 体重 行为(方法) 衣 食 住 行 22 小结 类是概念模型, 定义对象的所 有特性和所需 的操作 对象是真实的模型 类和对象 类定义实体对象是实际的实体 类是对象的原型类是对象的原型 所有属于同一个类所有属于同一个类 的对象都具有相同的对象都具有相同 的特性和操作的特性和操作 23 Java 是面向对
12、象的语言 q所有Java程序都以类class为组织单元 q关键字class定义自定义的数据类型 public class HelloAccp public static void main(String args) System.out.println(使用使用Java语言理解程序逻辑语言理解程序逻辑); 24 Java类模板 q类将现实世界中的概念模拟到计算机程序中 public class 类名类名 /定义属性部分定义属性部分 属性属性1的类型的类型 属性属性1; 属性属性2的类型的类型 属性属性2; 属性属性n的类型的类型 属性属性n; /定义方法部分定义方法部分 方法方法1; 方法方法
13、2; 方法方法m; 25 属性 q 事物的特性在类中表示为变量 q 每个对象的每个属性都拥有其特有的值 q 属性名称由类的所有实例共享 住址住址 姓名姓名 属性属性 年龄年龄 “在类中表示对象或实体拥有的特性时称为属性在类中表示对象或实体拥有的特性时称为属性 ” 促销员对象促销员对象 26 方法 方法方法 操作的实际实现 如何执行所请求的 操作的规范 方法指定操作对象 数据的方式 在得到操作请求时 指定如何做的算法 “对象执行的操作称为方法。对象执行的操作称为方法。” 27 方法的示例 缝衣服的步骤缝衣服的步骤 量尺寸量尺寸 得到工具得到工具 缝衣服缝衣服 方法方法 缝制衣服 裁缝 28 常见
14、错误 public class .Book String bookName; String authorName; int pageNum; boolean isAvailable; 类命名规则:类命名规则: 1、不能使用、不能使用Java关键字关键字 2、首字母可以为字母,也可以是、首字母可以为字母,也可以是“_”或或“$ ”(建议不要这建议不要这 样样) 3、不能包含空格或、不能包含空格或“.”号号 代码错误代码错误 29 以“人”类为例:演示 30 类和对象的示例 雇员雇员 收银员 系统管理员仓库管理员促销员采购经理 31 抽象 处理事物复杂性的方法处理事物复杂性的方法 只关注事物的重要
15、 细节,而忽略事物 的次要细节。 32 抽象:去除对象中与主旨无关的次要部分,而 仅仅抽取出与研究有关的内容(数据抽象) 抽象有两类:一类是过程抽象,另一类是数据抽象。 q过程抽象将整个系统的功能划分为若干部分,强调功能 完成的过程和步骤 q数据抽象把系统中需要处理的数据和这些数据上的操作 结合在一起,根据功能、性质、作用等因素抽象成不同 的抽象数据类型。每个抽象数据类型包含了数据,也包 含了针对这些数据的授权操作。面向对象的软件开发采 用数据抽象的方法来构建程序的类、对象和方法。 33 抽象的示例 递交报告递交报告 速递公司速递公司 在回执确认上签名在回执确认上签名 返回回执确认返回回执确认
16、 史密斯大夫史密斯大夫 将报告送往目的地将报告送往目的地 包装并密封报告包装并密封报告 34 数据抽象 q抽取出关键数据 q抽取出属性和方法 “根据具体的应用抽取出类的相关关属性和操作。” 35 数据抽象的示例 属性 Name StudentNO SeatNumber 方法 getName() getStudentNO() Student 类类 getSeatNumber() 36 在 Java 中实现类 类的修饰字: public abstract | final 缺省方式为缺省方式为 friendly 类的修饰字类的修饰字 class 类名称类名称 extends 父类名称父类名称impl
17、ements 接接 口名称列表口名称列表 变量定义及初始化;变量定义及初始化; 方法定义及方法体;方法定义及方法体; 37 一个一个完整的java源程序应该包括下列部分:应该包括下列部分: package语句;语句; /该部分至多只有一句,必须放在源程序的第一句该部分至多只有一句,必须放在源程序的第一句 import语句;语句; /*该部分可以有若干该部分可以有若干import语句或者没有,必须语句或者没有,必须 放在所有的类定义之前放在所有的类定义之前*/ public classDefinition; /公共类定义部分,至多只有一个公共公共类定义部分,至多只有一个公共 类的定义类的定义,
18、java语言规定该语言规定该java源程序的文件名必须与该公共类名完全源程序的文件名必须与该公共类名完全 一致一致 classDefinition; /类定义部分,可以有类定义部分,可以有0个或者多个类定义个或者多个类定义 interfaceDefinition; /接口定义部分,可以有接口定义部分,可以有0个或者多个接口个或者多个接口 定义定义 38 例如一个例如一个java源程序可以是如下结构,该源程序命名为源程序可以是如下结构,该源程序命名为 HelloWorldApp.java: package javawork.helloworld; /*把编译生成的所有把编译生成的所有.class
19、文件放到文件放到 包包javawork.helloworld中中*/ import java.awt.*; /告诉编译器本程序中用到系统的告诉编译器本程序中用到系统的AWT包包 import javawork.newcentury; /*告诉编译器本程序中用到用户自告诉编译器本程序中用到用户自 定义的包定义的包javawork.newcentury*/ public class HelloWorldApp. /*公共类公共类HelloWorldApp的定义,的定义, 名字与文件名相同名字与文件名相同*/ class TheFirstClass. /第一个普通类第一个普通类TheFirstCla
20、ss的定义的定义 class TheSecondClass. /第二个普通类第二个普通类TheSecondClass的定义的定义 . /其它普通类的定义其它普通类的定义 interface TheFirstInterface. /*第一个接口第一个接口TheFirstInterface 的定义的定义*/ . /其它接口定义其它接口定义 39 定义类和创建对象 q类的命名规则: q不能为 Java 中的关键字 q不能包含空格或点号“. ” q可以下划线“_”、字母或“$”符号开头 class Book String bookName; String authorName; int nopages
21、; boolean available; 40 创建对象 q 对象(实例instance):以类为模板创建的 具体实例(实际个体) q 创建某个类的具体对象(类似变量声明) 类名 欲创建的对象名new 类名构造函数(参数表) ; 例如: String s = new String( “Hello!” ) ; q 声明成员变量(member)的语法 修饰符 数据类型 变量名; q 引用方式:对象名.变量名 41 类中的方法 6-1 方法的定义方法的定义 方法的名称 参数列表 方法的主体 方法返回的对象类 型或原始类型 42 类中的方法 6-2 语法 ( , ,) 其中, 是方法返回值的数据类型
22、是用户自定义的方法名称 方法的参数列表是一组变量声明。 43 类中的方法 6-3 不能为 Java 中的关键字 不能包含空格或点号“.” 可以下划线“_”、字母或“$”符号开头 方法的命名规则方法的命名规则: 44 类中的方法 6-4 class Book String bookName; String authorName; int nopages; boolean available; void isAvailable() if(available = true) System.out.println(有这本书); . 方法 45 类中的方法 6-5 q实例方法可使用圆点符号来访问 q方法
23、被调用的对象在圆点左边,而方法的名称在圆点 右边 q例如: Obj.isAvailable(); 46 类中的方法 6-6 class Book String bookName; String authorName; int nopages; boolean available; static void isAvailable() if(available = true) System.out.println(“有这本书); Book objBook = new Book(); objBook.isAvailable(); . 圆点符号 47 this 关键字 q用于任何实例方法内,指向当前对
24、象 qthis 的值指向对其调用当前方法的对象 qthis 关键字可在需要当前类类型的对象引用时使用 48 this 关键字的示例 class Pixel int x; int y; void init (int x, int y) this.x = x; this.y = y; public static void main (String args) Pixel p = new Pixel(); p.init (4,3); 此程序初始化 x = 4 和 y = 3 对象的引用 49 构造方法3-1 q 问题的提出问题的提出 qJava试图在每个对象一诞生时,就给它一确定的状态,但试图在每个
25、对象一诞生时,就给它一确定的状态,但 有时这种系统的缺省初值不合适;所以有时这种系统的缺省初值不合适;所以 在创建一个新对象时,需用构造方法完成合法的在创建一个新对象时,需用构造方法完成合法的 初始化,使类内成员的初始化工作不依赖于外界初始化,使类内成员的初始化工作不依赖于外界 完成。完成。 这个方法就是构造函数这个方法就是构造函数,构造函数是与类同名的方法,构造函数是与类同名的方法, 创建对象的语句用创建对象的语句用 new算符开辟了新建对象的内存算符开辟了新建对象的内存 空间之后,将调用构造函数初始化这个新建对象。空间之后,将调用构造函数初始化这个新建对象。 50 构造方法3-2 构造函数
26、是类的一种特殊方法,它的特殊性主要体现在如下构造函数是类的一种特殊方法,它的特殊性主要体现在如下 的几个方面:的几个方面: (1) 构造函数的方法名与类名相同。构造函数的方法名与类名相同。 (2) 构造函数没有返回类型。构造函数没有返回类型。 (3) 构造函数的主要作用是完成对类对象的初始化工作。构造函数的主要作用是完成对类对象的初始化工作。 (4) 构造函数一般不能由编程人员显式直接调用。构造函数一般不能由编程人员显式直接调用。 (5) 在创建一个类的新对象的同时,系统会自动调用该类的在创建一个类的新对象的同时,系统会自动调用该类的 构造函数为新对象初始化。构造函数为新对象初始化。 51 构
27、造方法3-3 q每当创建给定类的实例时就调用的方法 q与类同名,但没有返回类型 qJava 为对象分配内存,初始化实例变量并调用构 造方法 q两种构造方法 q参数化构造方法 q隐式构造方法 52 参数化构造方法的示例 class Sdate int month; int day; int year; Sdate(int m,int d,int y) month=m; day=d; year=y; System.out.println(“日期是 + m + / + d + / + y + .); public static void main(String args) Sdate S1,S2; S1=new Sdate(11,27,1969); S2=new Sdate(3,3,1973); 参数化构造方法 53 隐式构造方法的示例 class Sdate int month=1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医院环境清洁消毒策略
- 护理安全中的康复治疗安全管理
- 护理纠纷预防的沟通技巧训练
- 口腔疾病的自我诊断
- 动脉粥样硬化药物治疗优化
- 护理投诉管理中的文化因素分析
- 河北邯郸市2026届高三第一次模拟检测数学试卷(含答案)
- 护理查房、护理会诊和护理病历讨论制度
- 离退休职工思想动态分析与对策
- 道孚县农文旅融合发展综合体验中心项目水土保持方案报告表
- 2026年江苏经贸职业技术学院单招综合素质考试题库附答案详解
- 2026河北衡水恒通热力有限责任公司公开招聘工作人员28名笔试备考试题及答案解析
- 2026春统编版(新教材)小学道德与法治一年级下册(全册)各单元知识点复习课件
- 吉水县2026年面向社会公开招聘农村(社区)“多员合一岗”工作人员【146人】笔试备考试题及答案解析
- 2026年常州工业职业技术学院单招综合素质考试题库附答案详解(达标题)
- 2026届高考语文复习:古代诗歌鉴赏课件
- 2026河南三门峡市辖区法院省核定聘用制书记员招聘74人考试参考题库及答案解析
- 【新教材】人教PEP版(2024)四年级下册英语 Unit 1 Class rules A Lets talk 教案
- 2025年内蒙古机电职业技术学院单招职业适应性测试题库带答案解析
- 公路工程项目首件工程认可制监理实施细则
- 2025年四川省高考化学真题卷含答案解析
评论
0/150
提交评论