面向对象程序设计类和对象.ppt

上传人:sh****n 文档编号:7451406 上传时间:2020-03-21 格式:PPT 页数:26 大小:281KB
返回 下载 相关 举报
面向对象程序设计类和对象.ppt_第1页
第1页 / 共26页
面向对象程序设计类和对象.ppt_第2页
第2页 / 共26页
面向对象程序设计类和对象.ppt_第3页
第3页 / 共26页
点击查看更多>>
资源描述
第三章 类和对象 2 回顾 Java具有8种基本数据类型 int boolean char short long float及doubleJava中的运算符可划分为四大子集 算术运算符 位运算符 关系运算符 逻辑运算符Java支持下列控制结构 选择 循环 跳转数组可用来将同一类型的数据存储在连续的内存位置 3 目标 掌握如何创建类和构造对象掌握方法的重载和覆盖了解类的继承了解包概念 4 类和对象 对象表示现实世界中某个具体的事物 抽象是从特定的实例中抽取共同的性质以形成一般化概念的过程 对象具有两方面的含义 在现实世界中 是客观世界中的一个实体在计算机世界中 是一个可标识的存储区域 5 类和对象 类是具有共同属性和行为的对象的抽象 类可以定义为数据和方法的集合 类也称为模板 因为它们提供了对象的基本框架 类 对象 抽象 实例化 属性或状态 操作或行为 数据或变量 方法 封装的实体 数据 方法 6 创建类 classname typevariable1 typevariableN typemethodname1 parameter list 方法体 typemethodnameN parameter list 方法体 在类中 属性是通过成员变量体现的 而操作是用成员函数 又称为方法 实现的 Java中定义类的通用格式 成员变量 对象属性 成员方法 对象行为或操作 7 定义方法 定义方法的一般格式 access typemethodname1 parameter list 方法体 发往某个对象的消息对应于一个方法调用 作为对消息的响应 对象将执行一个类似于过程体的方法 方法是包含在类中的函数 举例 publicvoidsetdate intday intmonth intyear day 23 month 7 year 2003 8 this引用 publicclassPassTest intx PassTest intx this x x publicvoidpassingValue System out println x等于 x publicstaticvoidmain Stringargs PassTesttest newPassTest 10 test passingValue 关键字this与对象关联它用于指示当前对象 指明此对象的变量x应赋值为通过构造函数传递的自变量x的值 9 简单访问控制 private和public public声明的数据成员和成员函数可从类外部的任何地方访问 而private数据将被隐藏 在类外不可见 这就实现了数据封装的思想 要从类外操纵private成员 只能通过类的public或protected成员来实现 10 方法重载 overloading 方法重载是Java实现面向对象的多态性机制的一种方式 同一个类中多个方法有相同的名字 不同的参数列表 这种情况称为方法重载 返回类型不同并不足以构成方法重载 当重载方法被调用时 编译器根据参数的类型和数量来确定实际调用哪个重载方法的版本 11 方法重载示例 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 早上 好 编译器决定调用版本 12 构造函数 构造函数名称与类名称相同构造函数没有返回类型其任务是在创建对象时初始化其内部状态 classFruit booleanseedLess booleanseasonal floatprice Fruit booleanseed booleanseason floatp seedLess seed seasonal season price p 13 创建对象 使用下列语法可创建对象 new构造函数关键字new通常称为创建运算符 用于分配对象内存 并将该内存初始化为缺省值 一旦new完成分配和初始化内存 它就将调用构造函数来执行对象初始化 当创建一个类时 只是创建了一种新的数据类型 对象是类的一个实例 classFruitDemo publicstaticvoidmain Stringargs Fruitf newFruit true false 50 0F 创建对象 14 缺省初始值 Java保证了在任何代码使用该内存之前 已至少将内存初始化为可预知的缺省值 15 重载构造函数 Java为每一个类自动提供缺省构造函数缺省构造函数将成员变量的值初始化为缺省值一旦创建了自己的构造函数 缺省的构造函数将不复存在 重载构造函数提供了一组创建对象的方式 可以根据需要决定是否带初始参数 publicclassconstructOverload intx constructOverload x 0 System out println 不带参数的构造函数 constructOverload intx this x x System out println 带一个参数的构造函数 16 继承 被继承的类称为父类继承父类的类称为子类执行继承时 子类将获得父类的属性 并具有自身特有的属性 继承是面向对象编程技术的一块基石 它允许创建分等级层次的类 运用继承 可以创建一个通用类定义一系列一般特性 该类可以被更具体的类继承 职员类 具有姓名和性别两个属性 工人类 继承了父类的姓名和性别属性外还包含类别和是否有服装津贴属性 主任类 还包含级别和是否配备交通工具属性 17 extends关键字 extends关键字用于继承类 声明一个继承父类的类的通常形式如下 classsubclass nameextendssuperclass name 类体 没有extends 默认父类为Object只能有一个父类 即单继承子类继承父类的全部成员 注意 18 super关键字 super关键字用来解决如何直接访问或初始化从父类继承来的属性 super有两种通用形式 调用父类的构造函数 用来访问被子类的成员覆盖的父类成员 它用在对象的构造函数中 将构造细节通过继承链往上传递 super 必须是在子类构造函数中的第一个执行语句 19 继承示例 classEmployee Stringname 姓名charsex 性别Employee Stringn chars name n sex s publicStringgetName returnname publicchargetSex returnsex classWorkerextendsEmployee charcategory 类别booleandressAllowance 是否提供服装津贴Worker Stringn chars charc booleand super n s category c dressAllowance d publicchargetCategory returncategory publicbooleangetAll returndressAllowance classInheDemo publicstaticvoidmain Stringargs Workerw newWorker M John M B true System out println 工人信息 System out println 姓名 w getName System out println 性别 w getSex System out println 类别 w getCategory if w getAll System out println 提供服装津贴 elseSystem out println 未提供服装津贴 20 类型转换 执行自动类型转换需要两个条件 接受转换的两种类型是兼容的目的类型数的范围比源类型的大强制类型转换语句的通用格式如下 目标类型 value UndergraduateStudents1 newUndergraduateStudent Graduates2 newGraduate Studentx x s1 Graduates3 newGraduate if xinstanceofGraduate s3 Graduate x 注意 从父类到子类的转换 建议在转换前判断父类是否指向子类的对象 21 Object类 Object类是类体系结构的根Java系统中的每个类都是Object类直接或间接的子类Object类包括在java lang包中此类定义了所有对象都具备的基本状态和行为可以用类型为Object的变量来引用任意类型的对象 22 方法覆盖 override 方法覆盖是Java实现多态性机制的另一种方式 在类层次结构中 如果子类中的一个方法与父类中的方法有相同的方法名并具有相同数量和类型的参数列表 这种情况称为方法覆盖 当一个覆盖方法通过父类引用被调用 Java根据当前被引用对象的类型来决定执行哪个版本的方法 可以通过super关键字调用直属父类中被覆盖的方法版本 23 方法覆盖示例 classSuperClass inta SuperClass a 10 publicvoidprintA System out println 父类中a a classSubClassextendsSuperClass inta SubClass inta this a a publicvoidprintA System out println 子类中a a publicclassOverrideDemo publicstaticvoidmain Stringargs SuperClasss1 newSubClass 10 s1 printA 将调用子类的printA方法 24 包 在Java中 包主要有以下用途 包允许将类组合成较小的单元有助于避免命名冲突包允许在更广的范围内保护类 数据和方法包可以是类 接口和子包的集合 25 使用包 创建包packagemypackage 访问Java包成员mypackage My Class导入包importpackage name 导入子包importpackage name 26 总结 对象代表现实世界中的实体类是对象的抽象 将对象的属性和行为抽象为类中的数据和方法 在Java中 extends关键字用于继承类 super关键字用来解决如何直接访问或初始化从父类继承来的属性 构造函数没有返回类型 名称与类的名称相同 关键字this与对象关联用于指明当前对象
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!