Java程序设计.ppt_第1页
Java程序设计.ppt_第2页
Java程序设计.ppt_第3页
Java程序设计.ppt_第4页
Java程序设计.ppt_第5页
已阅读5页,还剩305页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

黑龙江大学计算机科学技术学院青巴图2000 2015 Java程序设计 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一章Java概述第二章Java语言基础第三章Java面向对象编程第四章数组第六章标准类库第七章异常处理第八章图形用户界面 第九章I O处理第十章线程第十一章Applet及其它 目录 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 教材 Java程序设计 朱庆生编著清华大学出版社参考书目 Java2参考大全 HerbertSchildt著 张玉清等译清华大学出版社 Java编程思想 BruceEckel著侯捷译机械工业出版社 Java2核心技术 卷1 卷2 Java技术及其应用 第二版 王克宏编著高等教育出版社 参考书目 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一章Java概述 主要内容Java语言的形成与发展Java语言基本概念Java开发工具简单Java程序的编写Java编程规范 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 1Java语言的形成与发展 Java来源1991年 SunMicrosystem公司以JamesGosling为带头人 启动了一个针对消费类电子产品的程序运行环境以及语言的开发任务 这个语言叫做Oak 但是没有取得成功 随着Internet的普及 1995年Sun公司将Oak改造成面向网络的编程语言 正式命名为Java 目前 Java不仅仅是一种语言 而是一种结合多种技术于一身的软件开发和运行平台 Platform 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一章Java概述 1 1Java语言的形成与发展 Java之父JamesGoslingJamesGosling与清华大学王克宏 许斌等人在JavaOne大会上的合影 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 Java各个版本的发布时间及其特点1996年1月发布了Java1 0 为对外公布的第一个版本 1997年2月发布了Java1 1 主要修改了运行效率和图形界面API 1998年12月发布了Java1 2 由于与1 1变化巨大 Sun公司将其命名为Java2 1999年又将其分为三种应用版本 J2ME J2SE和J2EE 2000年5月发布了Java1 3 主要是扩展了Java1 2的各种API 2002年2月发布了Java1 4 主要改善了运行性能 2004年10月发布了Java5 0 即Java1 5 俗称Tiger 主要是增强了易用性 目前 Java6 0 即Java1 6 俗称Mustang 已成为主流的Java版本 第一章Java概述 1 1Java语言的形成与发展 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 Java三种应用版本的使用情况 J2SE 由于跨平台的优势 许多桌面软件已经用java来开发 尤其是在图形图像处理 网络应用程序 多线程等方面比较突出 J2EE 在企业计算 分布式计算 中大显身手 除了微软以外的主要大型电脑公司都有各自的J2EE产品 BEA的WebLogic IBM的Websphere Oracle的ApplicationServer等等 J2ME 充分占领了消费类电子产品的市场 占世界市场份额95 的厂商已经签约采用J2ME技术 其中包括手机 数字电视机顶盒 冰箱 洗衣机 电饭锅 智能卡产品等等 第一章Java概述 1 1Java语言的形成与发展 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 2Java语言基本概念 Java字节码和虚拟机字节码 ByteCode 源程序编译后得到的中间代码虚拟机 JavaVirtualMachine JVM 运行字节码程序的软件 即字节码程序的解释器字节码和虚拟机是Java语言实现平台无关性的关键 针对不同软硬件平台 提供不同的JVM 所以同一个字节码程序不需要重新编译就能在不同的软硬件平台上运行 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 Java字节码和虚拟机上述特点使Java程序可以不依赖于各种软硬件平台 达到 一次编写 到处运行 Writeonce Runanywhere 的目的 1 2Java语言基本概念 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 类和Java类库类 Class 基于面向对象编程概念 Java的任何程序 包括用户程序和系统程序 都以 类 为单位 类中可以包含数据 变量 以及处理这些数据的函数 方法 类库 Java开发平台所包含的 由各个机构 公司和团体编写的Java通用类的集合 也叫JavaAPI ApplicationProgrammingInterface 应用编程接口 它们是实现复杂应用程序的基础 Java1 5包含6000多个类 学习Java主要是学习面向对象编程方法和熟悉这些类库中的类 了解其中的方法和常量 1 2Java语言基本概念 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 Java程序分类Java应用程序 Application 按标准应用程序的形式在JVM中运行的程序 其特点是 至少由一个类组成 至少有一个类中包含一个main 方法 JavaApplet 小应用程序 在WWW浏览器中运行的一种特殊Java程序 可以不包含main 方法 1 2Java语言基本概念 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 3Java开发工具 开发工具 简单工具 J2SDK Java2SoftwareDevelopmentKit 简称JDK 包括Java程序编译 执行和调试工具以及Java虚拟机 分Windows版本 Linux版本 Solaris版本等等 所有操作都在文本环境中以输入命令的方式使用 可从免费下载 Jcreator 简单的Windows环境Java编辑工具 并且可以将编译和执行操作集成到软件菜单中 方便了Java程序的执行 可从www J免费下载 使用该软件之前 必须安装JDK 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 开发工具 集成开发环境工具 NetBeans Sun公司提供的免费软件 可以在Windows环境下进行编辑 运行和调试 可从免费下载 Ecplise 由IBM领导的开放源代码组织编写的免费开发工具 使用最为广泛 可从www eclipse org免费下载 Jbuilder 由Borland公司开发的商业软件 功能最丰富 主要版本为Jbuilder9 JbuilderX Jbuilder2005 VisualJ 和VisualJ NET 微软公司的产品 由于微软公司技术的封闭性 几乎没有人长期使用该软件 1 3Java开发工具 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 帮助文档Java帮助文档是由Sun公司提供的 基于HTM格式的网页文件 可以从下载 目前 Sun公司已经组织志愿者翻译了JDK1 5的帮助文档 并转换为单一的chm文档 以便学习者使用 1 3Java开发工具 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 JDK的安装 设置与使用安装设置Path 在环境变量中添加指向jdk安装目录下的bin子目录的路径 Windows98 修改C Autoexec BAT文件其他版本 在 系统属性 中设置PATH环境变量值常用命令Javac 编译源程序 如C javacHelloWorld java如果编译成功 会产生HelloWorld class文件Java 运行字节码程序 如C javaHelloWorld 1 3Java开发工具 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 3Java开发工具 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 3Java开发工具 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 3Java开发工具 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 3Java开发工具 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 4简单Java程序的编写 第一个Application HelloWorld编辑如下代码 保存为 HelloWorld java publicclassHelloWorld publicstaticvoidmain Stringargs System out println Hello World voidmain char argv 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一个Application HelloWorldJava程序区分大小写 即大小写敏感 如果class前加public 那么保存文件时必须用class后面的 类名 HelloWorld作为文件名 如果要直接运行该程序 有的程序并不需要直接运行 则必须包含一个main方法 并且其定义必须为publicstaticvoidmain Stringargs System out println 是显示括号内的内容 可以是字符串 整数 布尔变量或它们的连接 如 i i 并换行 类似的方法还有System out print Java语言中没有直接的输入字符串或整数的方法 该功能需要自己编写 为了便于与其他人交流 编写程序时应遵守Java编码规范的相关内容 1 4简单Java程序的编写 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一个Application HelloWorld编译 在保存源文件的目录下输入如下命令 如果编译成功 会生成HelloWorld class文件JavacHelloWorld java 必须写扩展名 不区分大小写 执行 编译成功后输入如下命令JavaHelloWorld 第二部分区分大小写 不能写扩展名 1 4简单Java程序的编写 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一个Applet HelloWorld编辑如下代码 并保存为 HelloWorldApplet java 1 4简单Java程序的编写 第一章Java概述 importjava awt Graphics importjava awt Font importjava applet Applet publicclassHelloWorldAppletextendsApplet publicvoidpaint Graphicsg g setFont newFont 宋体 Font BOLD 24 g drawString Hello world 25 25 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一个Applet HelloWorld编辑如下代码 并保存为 HelloWorldApplet htm 1 4简单Java程序的编写 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一个Applet HelloWorld编译 在保存源文件的目录下输入如下命令JavacHelloWorldApplet java执行 可以采用以下两种方式的任何一种通过AppletViewer执行 编译成功后输入如下命令AppletViewerHelloWorldApplet htm通过浏览器执行 在资源管理器中直接双击HelloWorldApplet htm 1 4简单Java程序的编写 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 1 5Java编程规范 不良习惯比没有习惯更可怕 命名规范 类名 一般为名词 首字母大写 每个单词的首字母大写 如HelloWorld方法名 小写字母开头 每个单词的首字母大写 如displayName变量名 同方法名 如length studentCount不要给类起一些与类库名称重复的名称 如 String File System代码缩进 每级代码块都应缩进3 5个空格 单独一行 并和开始的语句对齐 第一章Java概述 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第二章Java语言基础 主要内容标识符和保留字数据类型数据类型的转换运算符与表达式控制语句 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 1标识符 保留字 标识符标识符是指程序组成元素的名称 如变量名 方法 函数 名 类名等等 以英文字母 下划线 或Unicode字符集中的部分符号开始 后面可以跟英文字母 下划线 Unicode字符集中的部分符号和数字0 9 长度不限 大小写敏感 不能是Java保留字Unicode 一种用两个字节表示一个字符的标准字符集 合法的标识符例子 identifierUser Name sys val changeMyClass我的数据非法的标识符例子 2mailroom class 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 2数据类型 浮点类型floatdouble 布尔类型 字符类型 接口 类 数组 整数类型byteshortintlong 数据类型分类 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 简单数据类型主要参数 2 2数据类型 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 2数据类型 简单数据类型其他参数 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 2数据类型 char类型实例 输出所有Unicode字符 classUnicodeTest publicstaticvoidmain Stringargs for inti 0 i 65535 i System out print char i System out print if i 1 16 0 System out println 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 3常量和变量的定义 常量定义格式 final类型常量名1 值 常量名2 值 常量值的使用布尔型 true false字符类型 c n t 777 uxxxx 整数类型 123 450123 八进制数 830 x123 291123L 占用64位 浮点类型 0 123 64位 1 23423e3 64位 1 23423e3f 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 3常量和变量的定义 变量定义格式 数据类型变量名 值 变量名2 值 变量的定义实例 inti 10 j 20 charmyChar c booleanisCopied false floatmemberSalery 1000 0F doubleaDoubleNumber 0 0 longdiskBytes 80000000000L 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 4数据类型转换 自动类型转换两种类型是兼容的 并且目的数据的类型范围比源数据类型的范围大时 能够自动转换byte short char intint longlong floatfloat double 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 4数据类型转换 强制类型转换高级数据类型转换为低级数据类型时 要求必须在程序中显式写出转换类型例如bytei byte 1234 inti int 1234L 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 5运算符 Java运算符算术运算符 关系运算符 异或 取反 赋值运算符 条件运算符 其他运算符 分量运算符 下标运算符 实例运算符instanceof内存分配运算符new强制类型转换 方法调用 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 移位运算符 左侧保持 右侧丢弃如 128 1000000 1 64 11000000 128 1000000 8 1 11111111 左侧补0 右侧丢弃如 128 1000000 1 64 01000000 2 5运算符 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 6表达式 和C C 类似 关键要注意运算符的优先级 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 2 7控制语句 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 一般的for语句classForTest publicstaticvoidmain Stringargs intdata 1 2 3 4 5 6 7 8 9 10 for inti 0 i 10 i System out print data i t 结果 12345678910 2 8特殊for语句 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 改进的for语句 JDK1 5以上版本才支持 classForTest publicstaticvoidmain Stringargs intdata 1 2 3 4 5 6 7 8 9 10 for inti data System out print i t 结果 12345678910 2 8特殊for语句 第二章Java语言基础 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第三章面向对象特性 主要内容类与对象包及包的使用面向对象特性 封装性 继承性 多态性 其它特性抽象类和接口 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 1类 类的描述类是一种复合数据类型 可以包含一组变量和一组方法 函数 利用它可以创建对象 类是对象的模板 template 对象是类的一个实例 instance 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 实体1 实体2 实体3 实体4 实体5 实体6 状态1状态2 行为1行为2 状态1状态2 行为1行为2 分析 类1 属性1属性2 方法1方法2 抽象 类2 属性1属性2 方法1方法2 抽象 对象1 对象2 对象3 对象4 对象5 对象6 分析 实例化 3 1类 第三章面向对象特性 对象7 对象8 对象9 对象10 实例化 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 面向对象分析和设计实例 分析1 3 3 8 2 1等分数 发现如下特征 由分子和分母两个部分组成 分子和分母的值可能是浮点数 可以对两个分数进行四则运算 结果仍为分数 分母不能等于0 显示分数时应按 分子 分母 格式显示 根据这些特征 可以设计出右图所示的类 3 1类 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 类的声明格式 属性 class类名 继承说明 接口说明 类体 类的属性 public abstract final 类体 成员变量定义 成员方法定义 两点说明类的声明就是创建类的过程 也是编写程序的过程 一个源文件中可以定义多个类 其中最多只能有一个public类 可以没有 如果有public类 文件名必须和public类的类名相同 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 成员变量定义格式 变量属性 变量类型变量名称 变量初始化 变量属性 public protected private static final transient volatile static 静态变量 否则为实例变量final 常量transient 暂时性变量 和序列化有关 volatile 共享变量 和线程有关 变量类型 简单类型 类 接口 数组 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 成员方法定义格式 修饰符 返回类型方法名 参数 异常抛出声明 方法体 修饰符 public protected private static final abstract native synchronized 返回类型 简单变量 对象 数组 必须写出 参数列表 类型名称 类型名称 异常抛出声明 throws异常类型方法体 由局部变量定义以及Java语句组成 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 类的定义实例 第三章面向对象特性 3 1类 classFraction intfz fm voiddisplay System out println fz fm main Fractionf newFraction 1 2 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 方法重载同一个类的多个方法使用相同的名字 但它们的参数形式 个数或类型 不同 例如 可以定义下面的实现方法重载的类 classMethodOverloading voidreceive inti System out println intdata i voidreceive Strings System out println stringdata s voidreceive intx inty System out println twointdatas x y 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 classMethodOverloadingTest publicstaticvoidmain Stringargs MethodOverloadingmo mo newMethodOverloading mo receive 1 mo receive 1 mo receive 1 2 结果 编译 执行 intdata 1stringdata 1twointdatas 12 第三章面向对象特性 3 1类 方法重载下面是对上述类进行测试的类及其运行结果 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 方法重载注意事项只有返回类型不同 不能实现重载 编译出错 如 voidreceive inti intreceive inti return 1 如果调用不存在的方法 编译时出错 如 receive 1 23 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 构造方法没有返回类型 并且和类名同名的方法 构造方法也可以重载 当实例化该类 即创建该类的对象 时 Java运行环境会自动调用该类的构造方法 所以用于初始化成员变量的代码一般都放在构造方法内 如果不定义构造方法 java语言自动创建一个空的 没有任何参数的构造方法 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 构造方法构造方法实例 创建一个分数对象后 一般都会给分子和分母赋值 如果将分子和分母的值直接传给构造方法 并让构造方法赋值更加灵活和方便 classFraction intfz fm Fraction intfm if fm 0 this fm fm elsethis fm 1 fz 1 Fraction intfz intfm this fz fz if fm 0 this fm fm elsethis fm 1 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 构造方法在上述例子中 首先实现了构造方法的重载 其次 通过this关键字区分了成员变量和局部变量 即当局部变量和成员变量重名时 可以用this关键字修饰成员变量 另外 从分数对象的特点出发 将分母为零的分数的值改正为1 虽然这种处理并不符合使用者的习惯 但是在目前的学习进度下只能如此处理 等到学完异常相关的知识后 会有更好的方法处理这种情况 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 finalize方法对象被释放时自动调用的方法 类似于C 的析构函数 这种方法可以不定义 由于Java语言中很少自己分配资源 所以finalize方法不太常用 第三章面向对象特性 3 1类 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 2对象 对象将某一个类通过new运算符实例化后生成对象 它是该类的一个实例 一个类的多个不同实例对象具有相同的方法 但是其对象属性 即成员变量值 可以互不相同 对象的生成过程包含三方面的内容 声明 实例化 内存分配 以及初始化 调用构造方法 格式为 类名对象标识 对象标识 new构造方法 参数列表 例 FractiononeThird newFraction 1 3 FractiontwoFifths newFraction 2 5 这两个对象的内存分配情况如下 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 add sub mul div display 第三章面向对象特性 3 2对象 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 对象的使用通过 运算符访问成员变量或方法 例如 classFraction intfz fm Fractionadd Fractionf 将当前对象与f对象相加intrfz rfm rfm fm f fm rfz fz f fm f fz fm Fractiontmp 两个分数对象相加后结果也是对象tmp newFraction rfz rfm returntmp 第三章面向对象特性 3 2对象 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 对象的使用 publicstaticvoidmain Stringargs Fractionf1 f2 f3 f1 newFraction 1 3 f2 newFraction 2 5 f3 f1 add f2 f3 display 第三章面向对象特性 3 2对象 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 对象的使用在上述例子中需要注意以下几个问题 Java语言中 对象的实例化必须通过new运算符 这点与C 语言明显不同 没有经过new运算符实例化的对象是个空对象 其本质与空指针相同 add方法只需要一个参数 因为当通过 f1 add f2 格式调用该方法时 隐含着 f1 f2 的含义 如果定义成如下格式 那么该方法可以隶属于任何类 从而失去了面向对象编程的意义 第三章面向对象特性 3 2对象 Fractionadd Fractionf1 Fractionf2 intrfz rfm rfm f1 fm f2 fm rfz f1 fz f2 fm f2 fz f2 fm returnnewFraction rfz rfm Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 对象的使用成员变量尽量要通过方法来访问 而不应通过 对象 变量名 方式访问 为此 可以在Fraction类中添加如下getter和setter方法 第三章面向对象特性 3 2对象 intgetFz returnfz intgetFm returnfm voidsetFz intfz this fz fz voidsetFm intfm this fm fm Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 对象的使用有了getFz 和getFm 方法后 add方法可以改写为 第三章面向对象特性 3 2对象 Fractionadd Fractionf intrfz rfm rfm fm f getFm rfz fz f getFm f getFz fm Fractiontmp tmp newFraction rfz rfm returntmp Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 对象的释放如果对象的引用失效 那么所占用的内存区将被垃圾回收线程自动回收 例如 FractionmyFraction newFraction myFraction null FractionmyFraction1 newFraction FractionmyFraction2 newFraction 1 3 myFraction1 myFraction2 原先的myFraction1对象被自动回收 voidgarbageCollection FractionmyFraction newFraction 方法调用结束后myFraction对象被自动回收 第三章面向对象特性 3 2对象 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 总结 对象 类和软件开发的关系软件开发过程就是编写类代码的过程 因此如何合理地设计类 并协调好类和类之间的关系是关键 一个类一般都是所要解决的问题域某类实体的抽象 它包含适当的属性 成员变量 和行为 成员方法 一个类只应包含该有的方法 某个方法也只应包含该有的功能 软件工程领域将其称作 单一职责原则 一个类通过实例化另一类的对象 并引用其方法 使对方产生适当处理 从而完成更为复杂的任务 类的组合关系 第三章面向对象特性 3 2对象 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 3包 package 包的含义和作用类似于Windows操作系统中的文件夹 包是Java语言中解决类名冲突的有效手段 通常 我们将运行命令 Java类名 的文件夹称作java类的 默认包 即在该文件夹内的类都属于 默认包 但是 一旦这个文件夹内的类比较多时 很容易引起名称冲突问题 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 3包 package 包的含义和作用当类名相同时 在定义类的同时为其指定特殊的 文件夹 名称 即 包名 并将编译得到的 class 字节码文件存放在对应的文件夹中 此时 文件夹名和类名已经绑定在一起 成为该类的完整名称 这样就可以解决类名冲突的问题 Class1 Class2 Class2 类名不冲突 类名冲突 包1 包1 Class2 包2 Class2 包1 Class1 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 3包 package 包的含义和作用没有包名的类的字节码文件存放在 默认包 文件夹内 而具有包名的类存放在与包名同名的文件夹内 为了能够让默认包的类找到具有包名的类 可以将后者连同文件夹一起放在 默认包 文件夹内 例如 默认包为 F B类属于默认包 A类属于p1包 如果B要访问A类 那么它们的字节码文件应按下图位置保存 第三章面向对象特性 A B F p2 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 包的定义和使用定义包 在源程序开始处添加如下语句 表示该源程序中的所有类属于某个包 因此一个源程序中不能定义多个包 package包名 含有包说明的类的字节代码文件必须保存到和包同名的文件夹中 并以 包名 类名 格式访问它 例如 3 3包 package 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 第一个类A javapackagep1 publicclassA publicA System out println InPackagep1 第二个类A javapackagep2 publicclassA publicA System out println InPackagep2 3 3包 package 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 在JDK中编译和运行过程 Jcreator等软件中不需要下面的步骤 可以直接运行 将上述第一个源程序保存到p1文件夹下 如F p1 编译第一个源程序 F javacp1 A java将第二个源程序保存到p2文件夹下 如F p2 再编译第二个源程序 F javacp1 A java运行F JAVAp1 AF JAVAP2 A包名可以嵌套 也就是说可以采用 p1 p2 为包名 相应地 class文件应放在p1 p2文件夹内 3 3包 package 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 如果编写一个类时没有定义包 那么它属于默认包 应该放在运行 Java 命令所在的文件夹内 别的类使用这个类时 不需要额外的处理 反之 如果一个类含有包说明 那么其它类使用该类时要么指定全部名称 即 包名 类名 要么用import语句导入该类或该包中的所有类 例如 importp1 A 或写成importp1 classB publicstaticvoidmain Stringargs Aa1 newA p2 Aa2 newp2 A 3 3包 package 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 p1 p2 A A B F 这三个类之间的存储关系 3 3包 package 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 p1 p2 A A B p B p1 C F p p1 A p p1 B p p2 A p B p p2 p1 C 3 3包 package 第三章面向对象特性 更复杂的例子 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 3包 package 第三章面向对象特性 包的应用 总结 为了避免类名冲突 可以为同一个源文件中的一个或多个类指定同一包名 也可以在不同的源文件内指定相同的包名 用Javac命令编译源文件后 应将 class文件移动到当前文件夹下 即默认包 对应包名的文件夹内 其它集成环境 如JCreator Eclipse 会自动生成目录结构 并把编译后的 class文件自动保存到对应文件夹内 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 3包 package 第三章面向对象特性 包的应用 总结 使用带有包名的类时 应该用import语句 也可以用带有包名的类全称 如 p1 p2 MyClassmyObject newp1 p2 MyClass 运行带有包名的类 含有main方法的类 时 应在当前文件夹下输入 java包名 类名 命令 而不是进入保存 class文件的文件夹内输入java命令 常用类 如System String Math Integer 都属于java lang包 编译源代码时会自动导入 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 3包 package 第三章面向对象特性 静态import JDK1 5以上版本才支持 静态import是指把某个类中经常使用 通常是多于3次 的静态成员improt进来 以便使用时书写方便 importstaticjava lang System out publicclassHelloWorld publicstaticvoidmain Stringargs out print Hello out print World out print n Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 3包 package 第三章面向对象特性 静态import指令也可以使用 通配符 importstaticjava lang Math classStaticImportTest publicstaticvoidmain Stringargs doublef sin 1 计算sin值f abs f 取绝对值f sqrt f 取平方根f pow f 3 计算立方值System out print f Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 4面向对象特性 继承性 继承 Inheritance 的含义一个类继承另一个类的所有变量和方法的过程 被继承的类叫做 父类 继承后产生的类叫做 子类 例如 classSubClassextendsSuperClass 如果一个类没有继承任何类 Java默认其父类为java lang Object 继承是实现代码复用的最主要手段 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 继承方式子类可以原本不动地继承父类的代码 也可以重新设计与父类代码完全不同的代码 实际上 子类可以继承父类的除了private以外的所有成员变量和成员方法 如果定义了同类型同名称成员变量 那么它们隐藏父类的同名成员变量 如果定义了同名 同返回类型 同参数的成员方法 那么它们覆盖 Overlapping 父类的同名方法 3 4面向对象特性 继承性 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 继承的特点继承具有传递性 即子类不仅继承父类的成员 还能继承父类的父类 父类的父类的父类 的所有成员任何一个类都可以是另外一个类的子类 同时又可以是其它多个类的父类 即在Java语言中类的继承是单继承 父类中的所有private成员都不能被继承 如果子类想使用这些成员 必须重新定义 3 4面向对象特性 继承性 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 结果 0105如果在子类中不定义i 结果为 51010 3 4面向对象特性 继承性 第三章面向对象特性 继承实例 classSuperClass inti 5 classSubClassextendsSuperClass inti 隐藏父类的i变量privatevoidgo System out println i i 10 System out println i System out println super i publicstaticvoidmain Stringargs SubClasss newSubClass s go Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 在程序设计过程中 只有当两个类具有相似特性时才使用继承机制 例如 二维空间点类Point和三维空间点类Point3D之间可以使用继承 但是在Point和二维空间圆类Circle之间不应该有继承关系 分数类Fraction和带有整数部分的分数类MixedFraction之间也可以是继承关系 判断A类是不是B类的子类 AisaB 3 4面向对象特性 继承性 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 5面向对象特性 封装性 封装性 Encapsulation 用于控制类 成员变量或方法的访问权限的手段 在访问权限控制下的类 成员变量或方法不会被没有权限的代码访问 这种 黑匣子 结构是面向对象编成的最基本思想 其优点是信息隐藏 使得代码和数据不被外界干扰 同时也不会被误用 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 5面向对象特性 封装性 访问方式对类的访问包括 将一个类实例化为对象直接访问类的静态成员对成员变量或方法的访问包括 通过 对象名 成员变量名 或 对象名 成员方法名 实参 访问在类体内或子类中直接访问 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 5面向对象特性 封装性 访问控制方式 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 3 6面向对象特性 多态性 多态性 Polymorphism 由于方法重载和覆盖引起的同名方法不同功能现象 静态多态 即通过方法重载实现的多态 动态多态 通过方法覆盖实现的多态 也叫做 运行时多态 任何一个子类都可以覆盖父类的某一方法 当一个类的多个子类都覆盖同一个方法时 父类类型的某个对象根据其实例化对象不同 具有不同的行为 例如 第三章面向对象特性 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 classA voidcallme System out println InsideA scallme classBextendsA voidcallme System out println InsideB scallme classCextendsA voidcallme System out println InsideC scallme 3 6面向对象特性 多态性 第三章面向对象特性 动态多态实例 Java程序设计 黑龙江大学计算机科学技术学院版权所有 2000 2015 classPolyTest publicstaticvoidmain Stringargv Ar r newA r callme r newB r callme r newC r callme 运行结果 InsideA scallme InsideB scallme InsideC sc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论