JAVA面向对象编程基础.ppt

上传人:za****8 文档编号:6220906 上传时间:2020-02-19 格式:PPT 页数:73 大小:1.06MB
返回 下载 相关 举报
JAVA面向对象编程基础.ppt_第1页
第1页 / 共73页
JAVA面向对象编程基础.ppt_第2页
第2页 / 共73页
JAVA面向对象编程基础.ppt_第3页
第3页 / 共73页
点击查看更多>>
资源描述
第三章 面向对象编程 2 目标 理解对象理解类理解抽象和封装理解对象与类之间的关系掌握包的创建和导入 3 面向对象编程 4 对象 具备某种功能完成特定任务 对象是存在的具体实体 具有明确定义的特征和行为 5 对象的示例 收银员对象 顾客对象 顾客姓名 朱丽叶年龄 28操作 购买商品 特征 姓名 布兰尼年龄 35职务 收银员操作 收款打印帐单 行为 6 类 类是面向对象程序设计的基础和核心类是对象的抽象和归纳 是对象的模板 水果类 动物类 汽车类 类的示例 类是具有相同属性和方法的一组对象的集合 7 类和对象的示例 收银员 系统管理员 仓库管理员 促销员 部门经理 8 属性 属性名称由类的所有实例共享事物的特征在类中表示为变量每个对象的每个属性都拥有其特有的值 住址 姓名 属性 年龄 在类中属性表示对象或实体拥有的特征 9 方法 对象执行的操作称为方法 10 方法的示例 缝制衣服的步骤 量尺寸 得到工具 缝衣服 方法 缝制衣服 裁缝 11 类和对象的区别 类是概念模型 定义对象的所有特性和所需的操作 对象是类的实例 类定义对象 对象是实际的实体 12 类与对象的关系示例 类与对象的关系示例 13 抽象 处理事物复杂性的方法 只关注事物的重要细节 而忽略事物的次要细节 数据抽象 根据具体的应用抽取出类的相关属性和操作 14 数据抽象的示例 属性 方法 getName getStudentNO getSeatNumber 15 封装 信息隐藏 隐藏对象的实现细节 不让用户看到将东西包装在一起 然后以新的完整形式呈现出来例如 两种或多种化学药品组成一个胶囊将方法和属性一起包装到一个单元中 单元以类的形式实现 隐藏属性 方法或实现细节的过程称为封装 16 封装的示例3 1 采购经理 罗杰斯先生 大众汽车公司 通用汽车公司 市场经理 雪莉女士 要求 17 封装的示例3 2 有选择地提供数据 大众汽车公司 通用汽车公司 18 封装的示例3 3 实体大众汽车公司 实体通用汽车公司 AutiLtd ButoLtd 19 封装的特征 1 在类的定义中设置访问对象属性 数据成员 及方法 成员方法 的权限 限制本类对象及其他类的对象使用的范围 2 提供一个接口来描述其他对象的使用方法 3 其他对象不能直接修改本对象所拥有的属性和方法 封装的示例3 4 20 1 定义类的一般格式 1 系统定义的类 即Java类库 是系统定义好的类 类库是Java语言的重要组成部分 Java类库是一组由它的发明者SUN公司以及其他软件开发商编写好的Java程序模块 每个模块通常对应一种特定的基本功能和任务 且这些模块都是经过严格测试的 因而也总是正确有效的 当自己编写的Java程序需要完成其中某一功能的时候 就可以直接利用这些现成的类库 而不需要一切从头编写 这样不仅可以提高编程效率 也可以保证软件的质量 类的定义 21 2 用户自己定义的类 在Java程序中 用户自己定义类的一般格式如下 类的定义 语法class类名 类体 其中 class是创建类所使用的关键字 类体包含属性 数据成员 和成员方法的声明 22 类的简单定义 类的命名规则 不能为Java中的关键字不能包含空格或点号 可以下划线 字母或 符号开头 classBook StringbookName StringauthorName intnopages booleanavailable 23 类中的方法4 1 方法的名称 参数列表 方法的主体 方法返回的数据类型 24 类中的方法4 2 语法 返回值类型方法名 参数列表 方法体 语句体 25 类中的方法4 3 classBook StringbookName StringauthorName intnopages booleanavailable voidisAvailable if available true System out println 有这本书 26 创建对象通常包括声明对象 建立对象和初始化对象三步 1 声明对象声明对象就是确定对象的名称 并指明该对象所属的类 声明对象的格式如下 类名对象名表 例如 Class nameobject one object two 对象的声明 27 2 建立对象建立对象就是用new关键字为对象分配存储空间 只有通过建立对象这一步 才为对象分配内存 使该对象成为类的实例 建立对象的格式如下 对象名 new构造方法 例如 object one newClass name object two newClass name 对象的建立 28 3 创建对象的格式如下 类名对象名 new构造方法名 例如 Class nameobject one newClass name Class nameobject two newClass name 其中 new的作用是建立对象 为对象分配存储空间 执行newClass name 将产生一个Class name 类的实例 对象 对象的创建 与类名相同 29 4 使用对象一个对象可以有许多属性和多个方法 当一个对象被创建后 这个对象就拥有了自己的数据成员和成员方法 我们可以通过引用对象的成员来使用对象 对象的数据成员的引用方式如下 对象名 数据成员名对象的成员方法的引用方式如下 对象名 成员方法名 参数表 对象的使用 30 示例 classBook StringbookName StringauthorName intnopages booleanavailable staticvoidisAvailable if available true System out println 有这本书 BookobjBook newBook objBook isAvailable 31 类的严谨定义格式如下 类修饰符 class类名 extends父类名 implements接口列表 数据成员成员方法 类的严谨定义 32 访问修饰符6 1 信息隐藏是OOP最重要的功能之一 也是使用访问修饰符的原因 信息隐藏的原因包括 对任何实现细节所作的更改不会影响使用该类的代码防止用户意外删除数据 访问修饰符 33 访问修饰符6 2 34 6 1类修饰符类的修饰符用于说明对它的访问限制 一个类可以没有修饰符 也可以有public final abstract等几种不同的修饰符 1 无修饰符的情况如果一个类前无修饰符 则这个类只能被同一个包里的类使用 Java规定 同一个程序文件中的所有类都在同一个包中 这也就是说 无修饰符的类可以被同一个程序文件中的类使用 但不能被其他程序文件中的其他包中的类使用 类访问修饰符6 3 35 示例程序C3 1 java classAa 无修饰符的类Aainta 45 Aa类的数据成员a publicclassC3 1 公共类C3 1publicstaticvoidmain String args Aaa1 newAa 类C3 1中创建了一个无修饰符类Aa的对象a1System out println a1 a 36 2 public修饰符如果一个类的修饰符是public 则这个类是公共类 公共类不但可供它所在包中的其他类使用 也可供其他包中的类使用 在程序中可以用import语句引用其他包中的public类 Java规定 在一个程序文件中 只能定义一个public类 其余的类可以是无修饰符的类 也可以是用final修饰符定义的最终类 否则编译时会报错 类访问修饰符6 4 37 示例程序C3 2 java classFp C3 2f1 newC3 2 intadd return f1 b f1 c publicclassC3 2 intb 20 c 3 publicstaticvoidmain String args Fpp1 newFp System out println p1 add 运行结果 23 38 3 final修饰符用final修饰符修饰的类被称为最终类 最终类是不能被任何其他类所继承的 定义最终类的目的有三 1 用来完成某种标准功能 将一个类定义为final类 则可以将它的内容 属性和功能固定下来 与它的类名形成稳定的映射关系 从而保证引用这个类时所实现的功能是正确无误的 类访问修饰符6 5 39 2 提高程序的可读性 从父类派生子类 再从子类派生子类 使软件变得越来越复杂 而在必要的层次上设置final类 可以提高程序的可读性 3 提高安全性 病毒的闯入途径之一是在一些处理关键信息的类中派生子类 再用子类去代替原来的类 由于用final修饰符定义的类不能再派生子类 截断了病毒闯入的途径 因而提高了程序的安全性 40 4 abstract修饰符用abstract修饰符修饰的类称为抽象类 其作用在于将许多有关的类组织在一起 提供一个公共的基类 为派生具体类奠定基础 另外 当一个类中出现一个或多个用abstract修饰符定义的方法时 则必须在这个类的前面加上abstract修饰符 将其定义为抽象类 访问修饰符6 6 41 5 类修饰符使用注意事项可以同时使用两个修饰符来修饰一个类 当使用两个修饰符修饰一个类时 这些修饰符之间用空格分开 写在关键字class之前 修饰符的顺序对类的性质没有任何影响 需要注意的是 一个类可以被修饰为publicabstract 也可以被修饰为publicfinal 但不能被修饰为abstractfinal 这是因为abstract类自身没有对象 需要派生子类后再创建子类的对象 而final类不能派生子类 所以不存在用abstractfinal两个修饰符修饰的类 访问修饰符6 7 42 1 无修饰符 具有包访问特性 2 public访问修饰符 用public修饰的数据成员称为公有数据成员 使用时危险 通常不使用 3 private访问修饰符 用private修饰的数据成员称为私有数据成员 私有数据成员只能在定义它的类中使用 不能在类外使用 是对类进行封装时使用的主要方法 4 protected访问修饰符 用protected修饰的数据成员可以被该类及其子类的成员访问 同一个包中的类也可访问 主要作用是允许其他包中的子类访问父类 数据成员访问修饰符6 7 43 classClassA privateintk privatevoidmethodA System out println 私有方法 classClassB voidmethodB ClassAa newClassA a k 10 a methodA 数据成员访问修饰符示例 44 5 static修饰的静态数据成员用static修饰符修饰的数据成员不属于任何一个类的具体对象 而是属于类的静态数据成员 其特点如下 1 它被保存在类的内存区的公共存储单元中 而不是保存在某个对象的内存区中 因此 一个类的任何对象访问它时 存取到的都是相同的数值 2 可以通过类名加点操作符访问它 3 static数据成员仍属于类的作用域 还可以使用publicstatic privatestatic等进行修饰 修饰符不同 可访问的层次也不同 数据成员修饰符6 8 45 classPc staticdoublead 8 publicclassC3 5 publicstaticvoidmain Stringargs Pcm newPc Pcm1 newPc m ad 0 2 System out println m1 m1 ad System out println Pc Pc ad System out println m m ad 示例程序C3 5 java 对上述 1 和 2 的示例 运行结果 m1 0 2Pc 0 2m 0 2 46 6 final修饰符 用final修饰符修饰的数据成员称为最终数据成员 最终数据成员可以在声明时进行初始化 也可以通过构造方法赋值 但不能在程序的其他部分赋值 它的值在程序的整个执行过程中是不能改变的 用final修饰符说明常量时 需要注意 需要说明常量的数据类型并指出常量的具体值 数据成员修饰符6 9 47 classCa staticintn 20 finalintn1 finalintk 40 Ca n1 n publicclassC3 6 publicstaticvoidmain Stringargs Cam1 newCa Cam2 newCa m1 n1 90 System out println m1 n1 m1 n1 System out println m1 k m1 k System out println m2 n1 m2 n1 System out println m2 k m2 k 示例程序C3 6 java 运行结果 m1 n1 21m1 k 40m2 n1 22m2 k 40 48 课堂练习 1 P76例3 10 49 在成员方法头中 修饰符可以是公共访问控制符public 私有访问控制符private 保护访问控制符protected等访问权限修饰符 也可以是静态成员方法修饰符static 最终成员方法修饰符final 本地成员方法修饰符native 抽象成员方法修饰符abstract等非访问权限修饰符 访问权限修饰符指出满足什么条件时该成员方法可以被访问 非访问权限修饰符指明数据成员的使用方式 成员方法修饰符 50 方法修饰符 51 static修饰符3 1 static修饰符修饰的方法叫静态方法 静态方法是属于整个类的类方法 不用static修饰符限定的方法 是属于某个具体类对象的方法 static方法使用特点如下 1 static方法是属于整个类的 它在内存中的代码段将随着类的定义而分配和装载 而非static的方法是属于某个对象的方法 当这个对象创建时 在对象的内存中拥有这个方法的专用代码段 2 引用静态方法时 可以使用对象名做前缀 也可以使用类名做前缀 52 static修饰符3 2 3 static方法只能访问static数据成员 不能访问非static数据成员 但非static方法可以访问static数据成员 4 static方法只能访问static方法 不能访问非static方法 但非static方法可以访问static方法 5 main方法是静态方法 在Java的每个Application程序中 都必须有且只能有一个main方法 它是Application程序运行的入口点 53 例 classF intd1 staticintd2 voidme staticvoidme1 staticvoidme2 me1 合法引用d1 34 错 引用了非static数据成员me 错 引用了非static方法d2 45 54 final修饰符2 1 55 final修饰的最终方法 用final修饰符修饰的方法称为最终方法 如果类的某个方法被final修饰符所限定 则该类的子类就不能覆盖父类的方法 即不能再重新定义与此方法同名的自己的方法 而仅能使用从父类继承来的方法 可见 使用final修饰方法 就是为了给方法 上锁 防止任何继承类修改此方法 保证了程序的安全性和正确性 final修饰符2 2 56 native修饰的本地方法 修饰符native修饰的方法称为本地方法 此方法使用的目的是为了将其他语言 例如C C FORTRAN 汇编等 嵌入到Java语言中 这样Java可以充分利用已经存在的其他语言的程序功能模块 避免重复编程 native修饰符 57 abstract修饰符2 1 由abstract修饰的方法叫抽象方法 由abstract修饰的类叫抽象类抽象方法必须声明在抽象类中抽象方法语法 abstract返回值类型方法名 形式参数列表 声明抽象类语法 abstractclass 抽象方法不具有任何实现代码 58 abstract修饰符2 2 59 课堂练习 2 P83例3 14 60 构造方法 每当创建类的对象时就调用的方法与类同名 但没有返回类型Java为对象分配内存 初始化实例变量并调用构造方法两种构造方法参数化构造方法隐式构造方法 61 参数化构造方法的示例 classSdate intmonth intday intyear Sdate intm intd inty month m day d year y System out println 日期是 m d y publicstaticvoidmain Stringargs SdateS1 S2 S1 newSdate 5 27 2009 S2 newSdate 8 8 2008 62 隐式构造方法的示例 classSdate intmonth 5 intday 27 intyear 2009 publicstaticvoidmain Stringargs SdateS1 S1 newSdate 63 1 定义年 月 日三个变量 2 定义一个构造方法 给三个变量赋初值 3 定义main方法 输出今天的日期 构造方法练习 64 在一个方法的定义过程中又调用自身的方法称为递归方法 例如 计算N 的定义如下1 当N 0时 N N N 1 当N 0时 递归方法 65 图3 5求4 的递归过程 递归方法示例 66 成员方法的递归引用就是指在一个方法中直接或间接引用自身的情况 例如 intf1 intn intp p f1 n 1 returnp 递归方法示例 67 intf1 intn intf2 intm intp ints p f2 n 1 s f1 m 2 returnp returns 递归方法示例 间接调用 68 publicclassC3 7 staticintfac intn intfa if n 0 fa 1 elsefa n fac n 1 递归引用自身returnfa publicstaticvoidmain String args intm 4 intf1 fac m 引用fac 方法System out println 4 f1 示例程序C3 7 java 编程计算4 的值 69 图3 6计算4 的成员方法fac递归引用关系 70 包 包允许将类组合成较小的单元 类似文件夹 使其易于找到和使用相应的类文件有助于避免命名冲突 在使用许多类时 类和方法的名称很难决定 有时需要使用与其他类相同的名称 包基本上隐藏了类并避免了名称上的冲突包允许在更广的范围内保护类 数据和方法 可以在包内定义类 而在包外的代码不能访问该类 包将类名空间划分为更加容易管理的块 包既是命名机制也是可见度控制机制 71 创建包 packagemypackage publicclassCalculate publicdoublevolume doubleheight doublewidth doubledepth 72 导入包 importmypackage Calculate publicclassPackageDemo publicstaticvoidmain Stringargs Calculatecalc newCalculate 73 总结 对象由状态和行为组成类是具有相同属性和行为的一组对象的集合封装是隐藏对象实现细节的过程 以便不让用户看到类的变量和方法可被该类的实例访问圆点符号用于访问对象的成员构造函数在创建对象时初始化对象
展开阅读全文
相关资源
相关搜索

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


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

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


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