




已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 构成java语言的基本单位是类 下面的代码定义了一个最简单的类 classMankind 构成类必不可少的三要素 关键字class 类的名称 一对花括号 2 构成类最多有几个要素呢 五个 除上述三个要素外 花括号里面的内容称为类的定义体 还包括类的定义体 简称类体 class左边可以加关键字public 3 类体内容的构成类体内容通常由两种成分组成 一种是属性 或称为域 另一种是方法 例题2 下面的类中有三个域classMankind Stringname intsex intage 20 类体中可以有若干个域 即只允许有定义语句 定义语句中可以同时对变量赋初值 但是不允许有其他各种运算语句 例如 sex 1 sex 2 5 各种运算语句必须放在方法中 类体中所定义变量称为属性 或称为域 变量的值称为属性值 例题3 下面的类中有三个域和两个方法classMankind Stringname intsex intage voidsong Stringx System out println Mysongisx x voiddance Stringx System out println Mydancenameis x 下面是加关键字public后 类的定义 publicclassMankind Stringname intsex intage voidsong Stringx System out println Mysongisx voiddance Stringx System out println Mydancenameis x class左边的关键字public可以加 也可以不加 具体含义以后介绍 把当前定义好的类存盘 由于class左边的有关键字public 所以存盘时的主文件名必须是Mankind 如果没有class左边的有关键字public 主文件名可以任意取名 但是无论哪种情况 扩展名必须是 java 以扩展名 java的文件称为java源文件 4 类与实例之间的关系当用户类定义完成后 java语言通常不直接使用类本身 而是通过该类产生若干个实例 或称若干个对象 一个应用系统的各种功能 是通过类的实例完成 用实例去描述符合要求的具有文艺才能的人群中的具体人 例如 使用上例中的类去产生两个实例 用这两个对象分别描述张三 李静 他们都符合选拔文艺人才的具体要求 通过对每个实例的域和方法设置不同的值 体现他们两人个体上的差异 例如 Mankindperson1 newMankind Mankindperson2 newMankind person1 name 张三 person2 name 李静 person1 sex 1 person2 sex 0 person1 age 21 person2 age 20 person1 song 两只蝴蝶 person2 song 丁香花 person1 dance 拉丁舞 person2 dance 华尔兹 类 class 是具有相同属性和方法的一组对象的集合 它为属于该类的全部对象提供了统一的抽象描述 类是静态的 类的语义和类之间的关系在程序执行前就已经定义好了 而实例是动态的 对象是在程序执行时被创建和删除的 实例是系统中用来描述客观事务的一个实体 它是构成系统的一个基本单位 一个对象由一组属性和对这组属性进行操作的一组方法组成 对象之间通过消息通信 例题 Mankind java 5 类的实例变量与类的实例的关系Mankindperson1 newMankind Mankindperson2 newMankind 首先创建两个实例变量 引用句柄 然后将创建两个实例赋值给实例变量 也可以分开来写 Mankindperson1 person2 创建实例变量person1 newMankind person2 newMankind 一般格式 类名实例变量名 new类构造函数 或 类名实例变量名 实例变量名 new类构造函数 类构造函数名与类名同名 类名ManKind类构造函数ManKind Mankindperson1 person2 建立两个实例变量person1 person2 实例变量本质上是一个指针变量 专门用于存放该类某个对象的首地址 newMankind 新建一个对象 在内存中为该对象开辟一块连续的内存空间 存放该对象的域和方法 该构造函数的返回值是连续的内存空间的首地址 newMankind person1 person1 newMankind person1newMankind 如果再创建一个实例person2 newMankind 在内存中又为该对象开辟另外一块连续的内存空间 存放该对象的三个域和两个方法 并且把这块连续区域的首地址赋值给person2 newMankind newMankind 如果创建后的两个实例不赋值给实例变量 那么这两个对象对用户来说 是不能使用的 或者说 不能使用这两个实例的属性和方法 例如 下面的例子不能使用 person1 name 张三 person2 name 李静 person1 sex 1 person2 sex 0 person1 age 21 person2 age 20 person1 song 两只蝴蝶 person2 song 丁香花 person1 dance 拉丁舞 person2 dance 华尔兹 只有将创建的实例赋值给引用变量 这两个实例才能象上述那样 可以使用各自的属性和方法 来描述各自具体的特点 显示两个对象的具体差异 下面是可以运行调试的java程序publicclassMankind Stringname intsex intage voidsong Stringx System out println Mysongisx voiddance Stringx System out println Mydancenameis x 用作调试 发布时去掉publicstaticvoidmain String args Mankindperson1 newMankind Mankindperson2 newMankind person1 name 张三 person2 name 李静 person1 sex 1 person2 sex 0 person1 age 21 person2 age 20 person1 song 两只蝴蝶 person2 song 丁香花 person1 dance 拉丁舞 person2 dance 华尔兹 5 类是如何产生的 以及Java语言研究客观事物的方法 面向对象技术研究客观世界中的各种事物时 不是以某个个体为研究对象 而是把某一类的集合体作为研究对象 同时 对研究对象要进行适当的抽象 得到合适的应用模型 例如 学校要组织一个文艺团体 那么就要考虑具有文艺才能的人群 制定出选人的具体准则 这些准则应该是选拔具有文艺才能的人群必须具备的共性的东西 例如 年龄应该20 30岁之间等 个人应该具备的才能 例如 会各种乐器 或者会唱歌 跳舞等 共性的东西分成两个方面去研究 一方面就是个体对象的外部特征 例如 每个人都有身高 肤色 体重 性别等 通常说是对象的状态 另一方面就是个体对象具有的行为和能力 例如 会各种乐器 或者会唱歌 跳舞等 其中作为对象的状态用类中的属性来描述 而对象具有的行为和能力用类中的方法来描述 这些共性的东西能够表达出每个个体对象本身的特性需求 还能表达个体之间相互作用的关系 类是面向对象技术中一个非常重要的概念 简单地说 类是同种对象的集合与抽象 为了处理问题的方便 在面向对象的程序设计中定义了类的概念来表述同种对象的公共属性和公共行为 从这个意义上来说 类是一种抽象的数据类型 它是所有具有一定共性的对象的抽象 而属于类的某一个对象则被称为是类的一个实例 是类的一次实例化的结果 面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现 图1 1对象 实体与类 图1 1表示了类 对象 实体的相互关系和面向对象的问题求解的思维方式 在用面向对象的软件方法解决现实世界的问题时 首先将物理存在的实体抽象成概念世界的抽象数据类型 这个抽象数据类型里面包括了实体中与需要解决的问题相关的属性和行为 然后再用面向对象的工具 如Java语言 将这个抽象数据类型用计算机逻辑表达出来 即构造计算机能够理解和处理的类 最后将类实例化就得到了现实世界实体的面向对象的映射 对象 在程序中对对象进行操作 就可以模拟现实世界中的实体上的问题并解决之 6 实例的属性与方法及它们之间的相互关系对象的状态又称为对象的属性 主要指对象内部所包含的各种信息 也就是变量 每个对象个体都具有自己专有的内部变量 这些变量的值 或称属性值 标明了对象所处的状态 当对象经过某种操作和行为而发生状态改变时 具体地就体现为它的属性变量的值的改变 通过检查对象属性变量的值 就可以了解这个对象当前所处于的状态 对象的方法一方面把对象的内部变量包裹 封装 保护起来 使得只有对象自己的方法才能操作这些内部变量 另一方面 对象的方法还是对象与外部环境和其他对象交互 通信的接口 对象的环境和其他对象可以通过这个接口来调用对象的方法 操纵对象的行为和改变对象的状态 下面是可以运行调试的java程序test javapublicclassMankind Stringname intsex intage staticbooleanarea false voidsetSex intsex this sex sex intgetSex returnthis sex voidsong Stringx System out println Mysongisx voiddance Stringx System out println Mydancenameis x voiddoublePersonDance Mankindperson System out println 双人舞 用作调试 发布时去掉pubicstaticvoidmain String args Strings1 s2 Mankindperson1 newMankind Mankindperson2 newMankind person1 setName 张三 person2 setName 李静 person1 setSex 1 person2 setSex 0 person1 setAge 21 person2 setAge 20 s1 person1 getName s2person2 setName person1 doublePersonDance person2 实例是具有唯一对象名和固定对外接口的一组属性和操作的集合 是用来模拟组成或影响现实世界问题的一个或一组因素 其中实例名是区别于其他实例的标志 实例的属性表示了它所处的状态 而对象的操作则用来改变对象的状态以达到特定的功能 对外接口是对象在约定好的运行框架和消息传递机制中与外界通信的通道 对象最主要的特点是以数据为中心 它是一个集成了数据和其上操作的独立 自恰的逻辑单位 7 Java程序的分类 根据java程序运行的环境分成两类 一类称为应用程序 另一类称为小程序 应用程序使用java自带的软件包中java exe运行 而小程序借助于浏览器运行 当然也可以使用java自带的软件包中appletviewer exe运行 8 java应用程序的使用特点 每个java应用程序可以由若干个java源文件组成 每个java源文件可以有若干个类 如果某个java源文件有若干个类 但是只能有一个类有关键字public 通常在该类中有一个名称为main的方法 如果java应用程序中可以有若干个类 main的方法所在的类称为主类 main方法并不是主类真正意义上的方法 它的作用是提供该java应用程序运行的起点和终点 即在调试程序时使用 发布时去掉 一个java应用程序如果在任何一个类中没有main方法 则该java应用程序不能运行 上面介绍的java应用程序中只有一个类 所以只能把main方法放入该类中 这时该java应用程序才能运行 上面介绍的通过Mankind类建立若干个对象以及使用每个对象的域和方法的这些语句 都必须放在main方法中 下面是一个可以运行的完整的java应用程序 9 使java应用程序运行 必须有的三个步骤 编辑java应用程序 编译 执行10 java应用程序编译时的特点 编辑java应用程序完成后 首先存盘 存盘时的扩展文件名是 java 该文件称为java源文件 java的软件包 简称JDK 中有一个编译器javac exe 通过该编译器实现对java源文件的编译 编译器对java源文件编译时 要进行词法和句法检查 若有错误 会在屏幕提示错误信息 帮助用户修改错误 若无任何错误 生成 class文件 简称java字节码文件 该文件是一个中间文件 并不能直接执行 它实际是一个二进制文件 相对于java源文件来说 占据磁盘空间要小得多 该字节码文件无法直接读懂 当java程序调试成功后 编程人员只提供客户字节码文件 这样实现了源程序得保密性 一个java源文件中可以包含若干个类 假定有5个类 经编译器生成的java字节码文件就有5个 java字节码文件的数量与java源文件中类的数量严格一致 生成的java字节码文件与编译时所在的机器使用的操作系统无关 与编译时所在的机器的硬件结构无关 由于java字节码文件有这样的特点 以后当运行java字节码文件时 无须考虑java字节码文件生成时的环境 所以说 java源文件可以一次编译 到处运行 运行java字节码文件时 可以不必考虑机器上的差异 运行平台上的差异 这也是java广泛受欢迎的主要原因 而C语言不行 C语言编译后生成的 exe文件 与生成时所在机器的硬件结构有关 与所在的机器使用的操作系统有关 在一台机器可以运行的 exe文件 可能在另外机器无法运行 因此 称C语言编译后生成的 exe文件不可跨平台移植 11 java应用程序执行时的特点 高级语言按照执行模式可以划分为编译型模式和解释型模式 C语言属于编译型 C语言经过编译器编译后 一次完全生成在计算机上可以直接执行的代码 这种生成方式生成时所在机器的硬件结构有关 与所在的机器使用的操作系统有关 java语言属于解译型 C语言经过编译器编译后 并没有生成在计算机上可以直接执行的代码 而是生成中间代码 这种生成方式生成时所在机器的硬件结构无关 与所在的机器使用的操作系统无关 为了执行java字节码文件 java的软件包 简称JDK 中有一个java虚拟机java exe 通过该虚拟机实现对java字节码文件解释执行 java虚拟机执行java字节码文件时 是解释一条java字节码文件中的语句 即生成与所在机器的硬件结构有关 与所在的机器使用的操作系统有关的可执行代码 然后马上执行该可执行代码 接着再解释下一条java字节码文件中的语句 解释完成后 再马上执行 虽然java源程序经编译器编译后 生成的java字节码文件 可以在java虚拟机java exe支持下 可以到处运行 但是 java语言的执行速度很慢 仅仅是C语言执行速度的1 15 1 20 12 第一个JavaApplet程序JavaApplet是另一类非常重要的Java程序 虽然它的源代码编辑与字节码的编译生成过程与JavaApplication相同 但它却不是一类可以独立运行的程序 相反 它的字节码文件必须嵌入到另一种语言HTML的文件中 并由负责解释HTML文件的WWW浏览器充当其解释器 来解释执行JavaApplet的字节码程序 JavaApplet程序在调试时 使用appletviewer exeJavaApplet程序不需要提供一个main方法作为程序的运行起点和终点 源程序的编辑与编译首先看一个最简单的JavaApplet程序 例2 1MyJavaApplet javaimportjava awt Graphics 将java awt包中的系统类Graphics引入本程序importjava applet Applet 将java applet包中的系统类Applet引入本程序publicclassMyJavaAppletextendsApplet publicvoidpaint Graphicsg g drawString Hello JavaAppletWorld 10 20 首先 程序的第1 2行利用import关键字引入了程序需要用到的两个系统类Applet和Graphics 这两个系统类分别位于不同的系统包中 所以引用时需要指明它们所在的包名 包 package 是Java系统用来组织系统类的组织 功能作用和来源相关的系统类通常放在同一个包中 声明了一个名为MyJavaApplet的用户自定义类 与JavaApplication相同 JavaApplet程序也可以由若干个类定义组成的 而且这些类定义也都是由class关键字标志的 但是JavaApplet中不需要有main方法 它的要求是程序中有且必须有一个类是系统类Applet的子类 也就是必须有一个类的类头部分以extendsApplet结尾 其中extends是关键字 代表新定义的类是它后面跟着的已经存在的父类的子类 当一个类被定义成是另一个已经存在类的子类时 它将从其父类中继承一些成员 包括属性和方法 这样子类就可以利用父类已实现的功能而不必重复书写语句了 所有的JavaApplet程序中都必须有一个系统类Applet的子类 因为系统类Applet中已经定义了很多的成员域和成员方法 它们规定了Applet如何与执行它的解释器 WWW浏览器配合工作 所以当用户程序使用Applet的子类时 因为继承的功能 这个子类将自动拥有父类的有关成员 从而使WWW浏览器顺利地执行并实现用户程序定义的功能 MyJavaApplet的类体部分 其中只定义了一个方法paint 实际上 paint方法是系统类Applet中已经定义好的成员方法 系统类Applet中 还有很多方法 稍后讲解 paint方法与其他的一些Applet中的方法一样 能够被WWW浏览器识别和在恰当的时刻自动调用 所以用户程序定义的Applet子类只需继承paint方法并按具体需要改写其内容 这个过程称为 重置 将在后面的章节介绍 就可以使WWW浏览器在解释JavaApplet程序时通过自动执行用户改写过的成员方法 例如paint方法 来实现用户程序预期的功能 系统类Applet中已经定义好的成员方法还有 init start stop destroy 它们与paint方法使用的方式类似 具体到paint方法 它将在WWW所显示的Web页面需要重画时 例如浏览器窗口在屏幕上移动或放大 缩小等 被浏览器自动调用并执行 其作用一般是说明并画出JavaApplet程序在浏览器中的外观 任何一个JavaApplet程序要使用浏览器运行 必须把JavaApplet程序嵌入一个HTML文件中 如何嵌入一个HTML文件中 稍后讲解 当把一个JavaApplet程序嵌入HTML文件时 HTML文件会在其Web页面中划定一块区域作为此Applet程序的显示界面 当JavaApplet程序希望在这块自己的区域中显示图形 文字或其他程序需要的信息时 它只需要把用来完成这些显示功能的具体语句放在paint方法里即可 当浏览器浏览这个Applet程序所在的HTML文件时 会在合适的时刻自动执行此paint方法 从而在屏幕上显示出程序中欲显示的信息 g drawString Hello JavaAppletWorld 10 20 这个语句实际上调用了paint方法的形式参数g的一个成员方法drawString来完成屏幕的特定位置输出一个字符串 Hello JavaAppletWorld 上述功能 当浏览器执行Applet程序时 会自动产生两个实例 两个对象 一个是系统类Applet的子类的实例 另一个是系统类Graphics的实例 前者调用Applet的子类的实例中paint方法 后者作为实际参数赋值给paint方法中的形式参数g g是系统类Graphics的一个对象 它代表了Web页面上Applet程序的界面区域的背景 调用g的方法来显示字符串 就是在当前Applet程序的界面区域的背景上显示字符串 虽然JavaApplication和JavaApplet在运行方式上有很大的不同 但是它们遵循相同的Java语言的语法规则 所以编译时也使用完全相同的编译工具 例如 javacMyJavaApplet java编译的结果在当前目录下将生成一个以源代码中的类名MyJavaApplet命名的字节码文件MyJavaApplet class 1 2 2代码嵌入运行JavaApplet时必须将其字节码嵌入到HTML文件中 以JavaApplet程序为例 它可以嵌在如下的HTML文件中 AppletInclude html1 2 3 4 5 6 HTML是一种简单的排版描述语言 称为 超文本标记语言 它通过各种各样的标记来编排超文本信息 例如和这一对标记标志着HTML文件的开始和结束 在HTML文件中嵌入JavaApplet同样需要通过使用一组约定好的特殊标记和 其中标记还必须包含三个参数 1 CODE 指明嵌入HTML文件中的JavaApplet字节码文件的文件名 2 HEIGH 指明JavaApplet程序在HTML文件所对应的Web页面中占用区域的高度 3 WIDTH 指明JavaApplet程序在HTML文件所对应的Web页面中占用区域的宽度 可以看出 所谓把JavaApplet字节码嵌入HTML文件 实际上只是把字节码文件的文件名嵌入HTML文件 而真正的字节码文件本身则通常独立地保存在与HTML文件相同的路径中 由WWW浏览器根据HTML文件中嵌入的名字自动去查找和执行这个字节码文件 HTML文件可以用普通的文本编辑工具编写 并保存在Web服务器的合适的位置 Applet的运行Applet的运行过程可以用图2 2来表示 首先将编译好的字节码文件和编写好的HTML文件 其中包含了字节码文件名 保存在Web服务器的合适路径下 当客户端的WWW浏览器下载此HTML文件并显示时 它会自动下载此HTML中指定的JavaApplet字节码 然后调用内置在客户端的浏览器中Java解释器来解释执行下载到本机的字节码程序 图2 2JavaApplet的下载执行过程 从这个过程中可以看出 JavaApplet的字节码程序最早是保存在Web服务器上的 而它的运行过程则是在下载到本地后在本地机上完成的 这实际上就是网络应用程序的发布过程 当Applet程序需要修改或维护时只要改动服务器一处的程序即可 当然 这样做的前提条件是Applet的字节码程序可以在网络上的任何一台机器上顺利地运行 而这种跨平台的要求 根据前面的介绍 已由Java的解释器机制加以保证和实现 选择一种内置Java解释器的Web浏览器 例如3 0版本以上的IE或NetscapeNavigator 运行此程序 可以看到JavaApplet的运行结果 浏览器中一块300像素 宽 200像素 高 的区域被划定为Applet的界面 根据AppletInclude html中所嵌入的MyJavaApplet程序的代码 在这个区域的指定位置显示了一行指定的字符串 JavaApplet在浏览器中的运行结果 JDK软件包中还提供了一个模拟WWW浏览器运行Applet的应用程序AppletViewer exe 使用它调试程序就不必反复调用庞大的浏览器了 运行结果如图2 4所示 AppletViewer运行JavaApplet的结果 同学们也许会产生疑问 既然JavaApplication程序是以main方法作为执行的入口点 并从main方法的第一句开始执行 直到main方法的最后一句结束整个程序的运行过程 那么JavaApplet的执行入口点又在哪里呢 实际上正如前面所指出的 JavaApplet不是一个完整独立的程序 它需要与WWW浏览器配合工作 任何一个Applet程序中都有一个系统类Applet的子类 其中包含了许多从系统类Applet那里继承来的 可以被WWW浏览器自动执行的方法 当浏览器浏览包含此Applet的HTML文件时 该Applet被载入内存并由浏览器自动调用其中的方法 当浏览器被关闭时Applet的运行也就终止了 综上所述 JavaApplet是由若干个类定义组成的解释型程序 其中必须有一个类是系统类Applet的子类 执行JavaApplet时 需先将编译生成的字节码文件嵌入HTML文件 并使用内置Java解释器的浏览器来解释执行这个字节码文件 Applet类详细介绍1 Applet类是Java类库中的一个重要系统类 存在于java applet包中 从类继承结构上来说 Applet类应该属于构建用户图形界面的java awt包 但是Applet类实在特殊 以至于系统专门为它建立了一个包 Applet类是Java的另一个系统类java awt Panel的子类 Panel是Container的一种 它有如下的作用 1 包容和排列其他的界面元素 如按钮 对话框或其他的容器 2 响应它所包容范围之内的事件 或把事件向更高层次传递 Applet在拥有上述作用的基础上 还具有一些与浏览器和Applet生命周期有关的专门方法 2 Applet类的主要方法用户自己定义的Applet子类是JavaApplet程序的标志 在实际运行中 浏览器在下载字节码的同时 会自动创建一个用户Applet子类的实例 并在适当事件发生时自动调用该实例的几个主要方法 init 方法当小程序第一次被支持java的浏览器加载时 执行此方法 在小程序的生命周期中只执行一次init 方法 init 方法用来完成主类实例的初始化工作 Applet的字节码文件从WWW服务器端下载后 浏览器将创建一个Applet类的实例并调用它从Applet类那里继承来的init 方法 用户程序可以重置父类的init 方法 定义一些必要的初始化操作 如创建和初始化程序运行所需要的对象实例 把图形或字体加载入内存 设置各种参数 加载图形和声音并播放等 2 start 方法浏览器在调用init 方法初始化Applet类的实例之后 接着将自动调用start 方法启动运行该实例的主流程 用户程序可以重置Applet类的start 方法 加入当前实例被激活时欲实现的相关功能 如启动一个动画 完成参数传递等 start 方法用来启动浏览器运行Applet的主线程 除了在init 初始化之后被调用 start 方法在Applet被重新启动时 也会被系统自动调用 一般有两种情况造成Applet重启动 一是用户使用了浏览器的Reload操作 二是用户将浏览器转向了其他的HTML页面后又返回 总之 当包含Applet的HTML页面被重新加载时 其中的Applet实例就会被重新启动并调用start 方法 但是init 方法只被调用一次 3 paint 方法paint 方法的主要作用是在Applet的界面中显示文字 图形和其他界面元素 它也是浏览器可自动调用的Applet类的方法 导致浏览器调用paint 方法的事件主要有如下三种 Applet被启动之后 自动调用paint 来重新描绘自己的界面 Applet所在的浏览器窗口改变时 例如 窗口放大 缩小 移动或被系统的其他部分遮挡 覆盖后又重新显示在屏幕的最前方等 这些情况都要求Applet重画它的界面 此时浏览器就自动调用paint 方法来完成此项工作 Applet的其他相关方法 例如 repaint 方法 被调用时 系统也会相应地调用paint 方法 当repaint 方法被调用时 系统将首先调用update 方法将Applet实例所占用的屏幕空间清空 然后调用paint 方法重画之 与前面方法不同的是 paint 方法有一个固定的参数 Graphics类的对象g Graphics类是用来完成一些较低级的图形用户界面操作的类 其中包括了画圆 点 线 多边形以及显示简单文本等方法 当一个Applet类实例被初始化并启动时 浏览器将自动生成一个Graphics类的实例g 并把g作为参数传递给Applet类实例的paint 方法 paint 方法调用实例g的相关方法 就可以绘制出Applet的界面 程序只要重载系统定义的paint 方法 就可以使Applet界面显示预定画面 例如下面的例子将在Applet界面上 从坐标点 0 0 到 100 100 画出一条直线 例 MyApplet paint java1 importjava applet Applet 2 importjava awt Graphics 3 publicclassMyApplet paintextendsApplet4 5 publicvoidpaint Graphicsg 6 7 g drawLine 0 0 100 100 8 9 4 stop 方法stop 方法类似于start 方法的逆操作 当用户浏览其他WWW页 或者切换到其他系统应用时 浏览器将暂停执行Applet的主线程 在暂停Applet之前 浏览器将首先自动调用Applet类的stop 方法 用户程序可以重置Applet类的stop 方法 完成一些必要的操作 如中止Applet的动画操作等 5 destroy 方法当用户退出浏览器时 浏览器中运行的Applet实例也相应被消灭 即被内存删除 在消灭Applet之前 浏览器会自动调用Applet实例的destroy 方法来完成一些释放资源 关闭连接之类的操作 例如 终止所有当前Applet实例所建立并启动的子线程等 至于Applet实例本身 由于它是由浏览器创建的 最后也由浏览器来删除 不需要在destroy 方法中特别定义 实际上 上述Applet由浏览器自动调用的主要方法init start stop 和destroy 分别对应了Applet从初始化 启动 暂停到消亡的生命周期的各个阶段 图6 1显示了这个关系 Applet的生命周期与主要方法 例6 使用了上述的若干方法 运行后可以显示这些Applet主要方法的执行时刻及它们与Applet生命周期的关系 例题 AppletLifeCycle javaLifeCycle java 1 importjava applet 2 importjava awt 3 publicclassLifeCycleextendsApplet 定义主类是Applet的子类4 定义各计数器5 privateintInitCnt 6 privateintStartCnt 7 privateintStopCnt 8 privateintDestroyCnt 9 privateintPaintCnt 10 publicLifeCycle 构造函数11 各计数器初始化12 InitCnt 0 StartCnt 0 StopCnt 0 DestroyCnt 0 PaintCnt 0 13 14 publicvoidinit 15 16 InitCnt init 方法执行次数加117 18 publicvoiddestroy 19 20 DestroyCnt destroy 方法执行次数加1 21 22 publicvoidstart 23 24 StartCnt start 方法执行次数加125 26 publicvoidstop 27 28 StopCnt stop 方法执行次数加129 30 publicvoidpaint Graphicsg 31 32 PaintCnt paint 方法执行次数加133 g drawLine 20 200 300 200 g drawLine 20 200 20 20 画出坐标轴和标尺 34 g drawLine 20 170 15 170 g drawLine 20 140 15 140 35 g drawLine 20 110 15 110 36 g drawLine 20 80 15 80 37 g drawLine 20 50 15 50 38 g drawString Init 25 213 39 g drawString Start 75 213 40 g drawString Stop 125 213 41 g drawString Destroy 175 213 42 g drawString paint 235 213 43 g fillRect 25 200 InitCnt 30 40 InitCnt 30 用矩形块高度显示各种方法被 调用次数44 g fillRect 75 200 StartCnt 30 40 StartCnt 30 45 g fillRect 125 200 StopCnt 30 40 StopCnt 30 46 g fillRect 175 200 DestroyCnt 30 40 DestroyCnt 30 47 g fillRect 235 200 PaintCnt 30 40 PaintCnt 30 48 49 classend这个程序将计算Applet的五个主要方法的执行次数 并用矩形块的高度表示出来 通过运行这个程序 读者可以体会上述五个主要方法的执行情况 程序中用到了Graphics类的几个方法 如drawL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025办公用品耗材购销合同范本
- 2025国家能源集团煤炭经营分公司高校毕业生招聘(第二批)人员(已结束)模拟试卷及答案详解(必刷)
- 2025年山东师范大学公开招聘人员(23名)考前自测高频考点模拟试题及完整答案详解1套
- 2025江西赣南医科大学高层次人才招聘180人模拟试卷附答案详解
- 2025江苏连云港市灌南县招聘事业单位人员43人模拟试卷附答案详解
- 2025签订汽车销售合同的注意事项
- 2025江苏金灌投资发展集团有限公司、灌南城市发展集团有限公司招聘高层次人才10人考前自测高频考点模拟试题及一套答案详解
- 2025内蒙古恒正实业集团有限公司招聘10人考前自测高频考点模拟试题及参考答案详解一套
- 2025年无固定期限合同内容如何确定
- 2025年湖南娄底市城市发展控股集团有限公司外派人员选聘模拟试卷及答案详解(名校卷)
- 国家公务员行测数量关系(数字推理)模拟试卷1(共253题)
- 北师大版四年级数学上册第五单元《方向与位置》(大单元教学设计)
- (高清版)JTG 5211-2024 农村公路技术状况评定标准
- 人教精通版6年级上下册重点单词和句型默写
- 《民航客舱设备操作与管理》课件-项目二 客舱服务设备
- 大隐静脉消融术手术
- 三D打印公开课
- 生而逢盛世青年当有为 (模板)
- 养殖险的理赔培训课件
- 威士忌培训课件
- DB51T 3149-2023 四川省电力用户受电设施及配电设施运维检修服务管理规范
评论
0/150
提交评论