资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
3 面向对象技术 第 章 2 知识回顾 Java语言基础 Java数据类型分类 变量是存储数据的基本单元 数据类型转换 数组用于将相同数据类型的多项数据存储在连续的内存单元中 Java中提供了一组丰富的运算符 Java支持的控制语句编程结构 简单数据类型 复杂数据类型 自动类型转换 强制类型转换 if else switch while do while for 3 本章目标 理解对象 理解类 理解封装 理解对象与类之间的关系 掌握包的创建和导入 4 类和对象 对象表示现实世界中某个具体的事物 抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程 对象具有两方面的含义 在现实世界中 是客观世界中的一个实体在计算机世界中 是一个可标识的存储区域 5 对象 对象是存在的具体实体 具有明确定义的状态和行为 6 对象的示例 收银员对象 顾客对象 顾客姓名 朱丽叶年龄 28体重 52千克操作 购买商品 状态 姓名 布兰尼职衔 收银员年龄 35体重 60千克操作 收款打印帐单 行为 7 类和对象 类是具有共同属性和行为的对象的抽象 类可以定义为数据和方法的集合 类也称为模板 因为它们提供了对象的基本框架 类 对象 抽象 实例化 属性或状态 操作或行为 数据或变量 方法 封装的实体 数据 方法 8 类和对象的区别 类是概念模型 定义对象的所有特性和所需的操作 对象是真实的模型 类定义实体 对象是实际的实体 9 类 类以共同特性和操作定义实体类是用于组合各个对象所共有操作和属性的一种机制 形状类 动物类 汽车类 类的示例 类是具有相同属性和行为的一组对象的集合 10 类和对象的示例 收银员 系统管理员 仓库管理员 促销员 采购经理 11 封装 信息隐藏 隐藏对象的实现细节 不让用户看到将东西包装在一起 然后以新的完整形式呈现出来例如 两种或多种化学药品组成一个胶囊将方法和属性一起包装到一个单元中 单元以类的形式实现 隐藏属性 方法或实现细节的过程称为封装 封装 12 封装的示例3 2 有选择地提供数据 法拉力公司 迪斯尼汽车公司 13 在Java中创建类 class 类名称 类开始标记 类结束标记 属性声明 方法声明 Java语言中定义类的语法 14 创建类 classname typevariable1 typevariableN typemethodname1 parameter list 方法体 typemethodnameN parameter list 方法体 在类中 属性是通过成员变量体现的 而操作是用成员函数 又称为方法 实现的 Java中定义类的通用格式 成员变量 对象属性 成员方法 对象行为或操作 15 创建类规则 类的命名规则 不能为Java中的关键字不能包含空格或点号 只能以下划线 符号或字母开头 16 在Java类中定义方法 返回值类型 方法名称 方法开始标记 方法结束标记 方法主体 Java语言中定义方法的语法 参数1 参数2 参数n 17 定义方法 定义方法的一般格式 access typemethodname1 parameter list 方法体 发往某个对象的消息对应于一个方法调用 作为对消息的响应 对象将执行一个类似于过程体的方法 方法是包含在类中的函数 举例 publicvoidsetdate intday intmonth intyear day 23 month 7 year 2003 18 缺省初始值 Java保证了在任何代码使用该内存之前 已至少将内存初始化为可预知的缺省值 19 在Java类中定义方法 classPerson Stringname 定义名字intscore 定义得分publicStringgetName returnname 20 构造方法 构造方法是一个特殊的方法 Java中的每个类都有构造方法创建类实例时调用的方法与类同名 但没有返回类型Java为对象分配内存 初始化实例变量并调用构造方法构造方法只能由new运算符调用两种构造方法 参数化构造方法隐式构造方法 21 构造方法 构造方法名称与类名称相同构造方法没有返回类型其任务是在创建对象时初始化其内部状态 classFruit booleanseedLess booleanseasonal floatprice Fruit booleanseed booleanseason floatp seedLess seed seasonal season price p 22 构造方法 隐式构造方法 classPerson Stringname 定义参赛选手名字intscore 定义参赛选手得分intgiveNum 定义参赛选手本轮的出拳 创建对象时自动创建一个无参数的构造方法 23 创建对象 类实例化可生成对象 对象通过消息传递来进行交互 消息传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为 一个对象的生命周期包括三个阶段 生成 使用和消除 24 创建对象 创建对象 声明 实例化 初始化 类 对象名称 new 构造方法 参数 实例化对象选手JohnPersonp1 newPerson John 实例化对象选手LisaPersonp2 newPerson Lisa 实例化裁判DaveJudgmentj1 newJudgment Dave 25 创建对象 使用下列语法可创建对象 new构造函数关键字new通常称为创建运算符 用于分配对象内存 并将该内存初始化为缺省值 一旦new完成分配和初始化内存 它就将调用构造函数来执行对象初始化 当创建一个类时 只是创建了一种新的数据类型 对象是类的一个实例 classFruitDemo publicstaticvoidmain Stringargs Fruitf newFruit true false 50 0F 创建对象 26 this引用 publicclassPassTest intx PassTest intx this x x publicvoidpassingValue System out println x等于 x publicstaticvoidmain Stringargs PassTesttest newPassTest 10 test passingValue 关键字this与对象关联它用于指示当前对象 指明此对象的变量x应赋值为通过构造函数传递的自变量x的值 27 方法重载 方法重载是指多个方法享有相同的方法名 重载的方法具备如下特点 方法的参数必须不同方法参数的个数不同参数类型不同返回类型不能用来区分重载的方法 28 方法重载 overloading 方法重载是Java实现面向对象的多态性机制的一种方式 同一个类中多个方法有相同的名字 不同的参数列表 这种情况称为方法重载 返回类型不同并不足以构成方法重载 当重载方法被调用时 编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本 29 方法重载示例 classCalculation publicvoidadd inta intb intc a b System out println 两个整数相加得 c publicvoidadd floata floatb floatc a b System out println 两个浮点数相加得 c publicvoidadd Stringa Stringb Stringc a b System out println 两个字符串相加得 c classCalculationDemo publicstaticvoidmain Stringargs Calculationc newCalculation c add 10 20 c add 40 0F 35 65F c add 早上 好 编译器决定调用版本 30 构造方法重载 Java为每一个类自动提供缺省构造函数缺省构造函数将成员变量的值初始化为缺省值一旦创建了自己的构造函数 缺省的构造函数将不复存在 重载构造函数提供了一组创建对象的方式 可以根据需要决定是否带初始参数 publicclassconstructOverload intx constructOverload x 0 System out println 不带参数的构造函数 constructOverload intx this x x System out println 带一个参数的构造函数 31 构造方法重载 Person 构造方法 name 选手 给姓名赋初值score 0 给成绩赋初值 Person Stringna 构造方法 name na 给姓名赋初值score 0 给成绩赋初值 Person Stringna intsc 构造方法 name na 给姓名赋初值score 0 给成绩赋初值 构造方法重载 32 包 包允许将类组合成较小的单元 类似文件夹 使其易于找到和使用相应的类文件 有助于避免命名冲突 包基本上隐藏了类并避免了名称上的冲突 包允许在更广的范围内保护类 数据和方法 可以在包内定义类 而在包外的代码不能访问该类 包可以是类 接口和子包的集合 33 使用包 创建包packagemypackage 访问Java包成员mypackage My Class导入包importpackage name 导入子包importpackage name subpackage name 34 包的创建 packagegame person importjava util Random publicclassPerson Stringname 定义参赛选手名字intscore 定义参赛选手得分intgiveNum 定义参赛选手本轮的出拳publicPerson Stringname 构造函数 this name name score 0 35 包的导入 importgame person Person importgame manager Judgment publicclassCompareTwo publicstaticvoidmain String args 程序入口 Personp1 newPerson John Personp2 newPerson Lisa Judgmentj1 newJudgment Dave 36 总结
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号