Скачать презентацию 基础篇 1 Net Beans 5 0集成开发环境 F Скачать презентацию 基础篇 1 Net Beans 5 0集成开发环境 F

fbf9ea9178af1b2fd7eadda623767221.ppt

  • Количество слайдов: 86

基础篇 1 基础篇 1

Net. Beans 5. 0集成开发环境 F IDE 常规教程 F 编辑特性 F GUI 生成器 (Matisse) F Net. Beans 5. 0集成开发环境 F IDE 常规教程 F 编辑特性 F GUI 生成器 (Matisse) F 插件(模块)开发包 2

继承与多态 应当达到的目标: E 熟悉继承的概念,掌握域、方法的继承与隐藏 掌握this与super的使用 E 理解多态的概念,掌握java重载的实现方法 E 掌握构造函数的继承与重载进行初始化的方法 E 熟悉包的创建与使用 E 熟悉接口的声明与实现 E 继承与多态 应当达到的目标: E 熟悉继承的概念,掌握域、方法的继承与隐藏 掌握this与super的使用 E 理解多态的概念,掌握java重载的实现方法 E 掌握构造函数的继承与重载进行初始化的方法 E 熟悉包的创建与使用 E 熟悉接口的声明与实现 E 3

Net. Beans 5. 0集成开发环境 FIDE 常规教程 4 Net. Beans 5. 0集成开发环境 FIDE 常规教程 4

Net. Beans IDE 5. 0特性 Net. Beans 继承与多态 特性列表 Net. Beans IDE 5. 0 Net. Beans IDE 5. 0特性 Net. Beans 继承与多态 特性列表 Net. Beans IDE 5. 0 引入 了对基于 Net. Beans 平台的 IDE 模块和富客户端程序开 发的全面支持,直观的全新 GUI Builder Matisse,经过 重新设计的对 CVS 的新支 持 , 对 Sun Application Server 8. 2、 Weblogic 9 和 JBoss 4 的支持,以及很多 的编辑器增强功能。 开发 Net. Beans 模块 Matisse GUI Builder 服务器 Web 框架 Web Services 编辑器增强功能 代码完成 重构 版本控制 调试 其它可用性改进 新 Net. Beans 附加包 5

Net. Beans IDE 5. 0特性 特性列表 继承与多态 自动完成类、方法、字段,现在还可以 使用代码完成框生成以下的代码片段: 开发 Net. Beans 模块 从自定义代码模板产生(以前仅能从扩 Net. Beans IDE 5. 0特性 特性列表 继承与多态 自动完成类、方法、字段,现在还可以 使用代码完成框生成以下的代码片段: 开发 Net. Beans 模块 从自定义代码模板产生(以前仅能从扩 Matisse GUI Builder 展缩写中产生);设置方法和获取方法 服务器 匿名内部类 ;要重载或实现的方法的方 Web 框架 法体 ; Web Services 此外,可以输入 camel 命名法缩写来生 编辑器增强功能 成代码(例如,在代码完成对话框打开 代码完成 时输入 AIOO 可以生成 重构 Array. Index. Out. Of. Bounds. Exception)。现 版本控制 在也可以通过敲入句号、分号或逗号来 调试 完成文字输入和关闭弹出框。方法参数 其它可用性改进 显示在 具提示中。 新 Net. Beans 附加包 6

Net. Beans IDE 5. 0特性 特性列表 开发 Net. Beans 模块 Matisse GUI Builder 服务器 Net. Beans IDE 5. 0特性 特性列表 开发 Net. Beans 模块 Matisse GUI Builder 服务器 Web 框架 Web Services 编辑器增强功能 代码完成 重构 版本控制 调试 其它可用性改进 新 Net. Beans 附加包 继承与多态 重构 Net. Beans 5. 0 极大地扩展了可用的重 构行为数量。新的重构行为包括: 安全删除 在可能的时候使用父类型 将内部类移至外部 上推 下推 将匿名类转换为内部类 提取方法 提取接口 提取父类型 7

Net. Beans IDE 5. 0特性 特性列表 开发 Net. Beans 模块 Matisse GUI Builder 服务器 Net. Beans IDE 5. 0特性 特性列表 开发 Net. Beans 模块 Matisse GUI Builder 服务器 Web 框架 Web Services 编辑器增强功能 代码完成 重构 版本控制 调试 其它可用性改进 新 Net. Beans 附加包 继承与多态 编辑器各种增强 Java 提示(用一电灯泡图标标示)帮助您生成代 码 支持把 HTML、JSP 和数据库代码片段拖放到 JSP 和 HTML 页面的组件模板 错误条表示出您的文件是否能编译通过,提供对 源文件的错误、警告、TODO 和书签的概览。 将选中的代码放到 try-catch 块中 改进的带有语法高亮功能的新 SQL 编辑器 使用拖放的方法在编辑器窗口中剪切和粘贴选中 的代码 在代码完成和 XML 验证功能中更方便地添加 XML DTD 和架构。 XML 浏览和改进的 XML 编辑器中自动缩进、 代码折叠功能 可以在预定义的快捷键集合和颜色方案中进行选 择(和其他著名的开发环境如 Emacs 是一致的)。 8

Net. Beans IDE 5. 0特性 特性列表 开发 Net. Beans 模块 Matisse GUI Builder 服务器 Net. Beans IDE 5. 0特性 特性列表 开发 Net. Beans 模块 Matisse GUI Builder 服务器 Web 框架 Web Services 编辑器增强功能 代码完成 重构 版本控制 调试 其它可用性改进 新 Net. Beans 附加包 继承与多态 编辑器各种增强 Java 提示(用一电灯泡图标标示)帮助您生成代 码 支持把 HTML、JSP 和数据库代码片段拖放到 JSP 和 HTML 页面的组件模板 错误条表示出您的文件是否能编译通过,提供对 源文件的错误、警告、TODO 和书签的概览。 将选中的代码放到 try-catch 块中 改进的带有语法高亮功能的新 SQL 编辑器 使用拖放的方法在编辑器窗口中剪切和粘贴选中 的代码 在代码完成和 XML 验证功能中更方便地添加 XML DTD 和架构。 XML 浏览和改进的 XML 编辑器中自动缩进、 代码折叠功能 可以在预定义的快捷键集合和颜色方案中进行选 择(和其他著名的开发环境如 Emacs 是一致的)。 9

Net. Beans IDE 5. 0特性 特性列表 继承与多态 版本控制 IDE 能自动识别 CVS 作目录并把所有 开发 Net. Net. Beans IDE 5. 0特性 特性列表 继承与多态 版本控制 IDE 能自动识别 CVS 作目录并把所有 开发 Net. Beans 模块 改动过的文件在版本窗口中列出来。 Matisse GUI Builder 更新和提交文件是使用 CVS 所执行的最 服务器 常见的活动: 您可以从主要的 IDE 导航窗 Web 框架 口(Projects、Files 和 Favorites)或从 Web Services Versioning 窗口启动这些操作。标记和 编辑器增强功能 颜色编码显示出文件、目录、包和项目 代码完成 的当前状态。通过 Diff 命令可以对单个 重构 文件或整个包、目录或项目进行快速比 版本控制 较。新的 CVS 支持使共享项目元文件变 调试 得更容易,而且不仅仅可以共享源,还 其它可用性改进 可以共享 IDE 设置。 新 Net. Beans 附加包 10

Net. Beans IDE 5. 0快速入门 目 标 继承与多态 介绍在 Net. Beans IDE 5. 0 Net. Beans IDE 5. 0快速入门 目 标 继承与多态 介绍在 Net. Beans IDE 5. 0 中开发 J 2 SE 应用程序的一 些基本步骤。我们将使用实用 具类创建一个 My. Lib 项目,然后使用从库项目实现方法的主类创 建一个 My. App 项目。本文档旨在让您快速入门。 设置项目 Ø首先,我们将创建一个新 Java 类库,让它包含我们需要稍 后创建的实用 具类。然后,我们需要创建一个新 Java 应用 程序,将其用作我们的主项目。创建 My. App 项目后,我们将 My. Lib 的类添加到它的类路径 11

创建新 Java 类库 4. 2 Java的多态 1、选择 File > New Project (Ctrl-Shift-N)。在 Categories 下选 创建新 Java 类库 4. 2 Java的多态 1、选择 File > New Project (Ctrl-Shift-N)。在 Categories 下选 择 General。在 Projects 下,选择 Java Class Library 并单击 Next。 2、在 Project Name 下,输入 My. Lib。将 Project Location 更改 为计算机上的任意目录。从现在起,我们将此目录称为 Net. Beans_projects。 注意: 上面指定的类应该如下所示: /Net. Beans_projects/My. Lib/ 单击 Finish。My. Lib 项目将在 Projects 和 Files 两个窗口中打开。 12

创建新 Java 应用程序 4. 2 Java的多态 1、选择 File > New Project。在 Categories 下选择 General。 创建新 Java 应用程序 4. 2 Java的多态 1、选择 File > New Project。在 Categories 下选择 General。 在 Projects 下,选择 Java Application 并单击 Next。 2、在 Project Name 下,输入 My. App。确保将 Project Location 设置为 Net. Beans_projects。 3、输入 acrostic. Main 作为主类。 确保选中 Set as Main Project 和 Create Main Class 复选框。 单击 Finish。My. App 项目在 Project 窗口中显示,Main. java 在 Source Editor 中打开。 13

配置编译类路径 4. 2 Java的多态 1、在 Projects 窗口中,右键单击My. App 项目的 Libraries 节 点并选择 Add Project。 配置编译类路径 4. 2 Java的多态 1、在 Projects 窗口中,右键单击My. App 项目的 Libraries 节 点并选择 Add Project。 2、浏览到 Net. Beans_projects/ 并选择 My. Lib 项目文件夹。 Project JAR Files 窗格将显示可以添加到项目的 JAR 文件。 注意,My. Lib 的 JAR 将被列出,尽管我们还没有实际构 建 JAR 文件。此 JAR 文件是在构建和运行 My. App 项目 时被构建的。 3、单击 Add Project JAR Files。 展开 Libraries 节点。注意,My. Lib 项目的 JAR 文件将被添 加到 My. App 项目的类路径中。 14

创建和编辑 Java 源代码 目标 4. 2 Java的多态 现在我们需要创建 Java 包并添加构造 acrostic 时将使用的方法,然后,我们将实现 Main 类 创建和编辑 Java 源代码 目标 4. 2 Java的多态 现在我们需要创建 Java 包并添加构造 acrostic 时将使用的方法,然后,我们将实现 Main 类 中的 acrostic 方法。 l 1、右键单击 My. Lib 项目节点并选择 New > Java Class。键 入 Lib. Class 作为新类的名称,在 Package 字段键入 org. me. mylib,并单击 Finish。Lib. Class. java 将在 Source Editor 中打开 2、在 Lib. Class. java 中,将指针置于类声明 (public class Lib. Class {) 和构造方法 (public Lib. Class() {) 之间的行上。键 入或粘贴以下方法代码: 。 15

创建和编辑 Java 源代码 4. 2 Java的多态 创建 Java 包和类文件 public static String acrostic(String[] args) 创建和编辑 Java 源代码 4. 2 Java的多态 创建 Java 包和类文件 public static String acrostic(String[] args) { String. Buffer b = new String. Buffer(); for (int i = 0; i < args. length; i++) { if (args[i]. length() > i) { b. append(args[i]. char. At(i)); } else { b. append('? '); } } return b. to. String(); } 3、如果粘贴进去的代码格式不正确,则按 Ctrl-Shift-F 为整个 文件重新编排格式。 4、按 Ctrl-S 保存文件。 16

创建和编辑 Java 源代码 4. 2 Java的多态 编辑 Java 文件 1、在 Source Editor 中选择 Main. 创建和编辑 Java 源代码 4. 2 Java的多态 编辑 Java 文件 1、在 Source Editor 中选择 Main. java 选项卡。如果还没有打 开它,则在 Projects 窗口中展开 My. App > acrostics 并双击 Main. java。 2、删除 main 方法中的内容 // TODO code application logic here 并键入以下内容: String result = Li 3、按 Ctrl-Space 打开代码完成框。IDE 为项目编译类路径中 的所有类和方法提供代码完成。选择Lib. Class (org. me. mylib) 并按 Enter。IDE 将填充类名称的其余部分,还为该类自动创 建重要语句。 注意: IDE 还在代码完成框之上打开一个框,显示所选类或 包的 Javadoc 信息。由于大多数包不存在 Javadoc 信息,在到 达 Java 类前,该框一直显示 "Cannot find Javadoc message"。 17

创建和编辑 Java 源代码 4. 2 Java的多态 编辑 Java 文件 4、在主方法中,在 Lib. Class 后输入一个句点。 代码完成框将 创建和编辑 Java 源代码 4. 2 Java的多态 编辑 Java 文件 4、在主方法中,在 Lib. Class 后输入一个句点。 代码完成框将 再次打开。选择 acrostic(String[]args) 方法并按 Enter。IDE 将 填充 acrostic 方法并在提示中显示该方法的参数。 5、再次按 Ctrl-Space 以打开代码完成框,并选择 args,然后 按 Enter。 6、键入一个分号。注意,它将跟在结束括弧的后面,尽管插 入点在括弧内。最后一行应该如下所示: String result = Lib. Class. acrostic(args); 7、按 Enter 开始一个新行。然后键入 sout 并按空格。sout 缩 写将展开为 System. out. println(""); ,指针位于两个引号之间。 在引号中键入 Result = 并在结束引号后键入 + result。最后一 行应该如下所示: System. out. println("Result = " + result); 8、按 Ctrl-S 保存文件。 18

编译和运行项目 目标 4. 2 Java的多态 现在我们需要设置主类和执行参数,以便运行项 目。我们还将看看 IDE 的清除、构建和 Javadoc 生 成功能。 l 设置主类和执行参数 编译和运行项目 目标 4. 2 Java的多态 现在我们需要设置主类和执行参数,以便运行项 目。我们还将看看 IDE 的清除、构建和 Javadoc 生 成功能。 l 设置主类和执行参数 1、右键单击 My. App 项目节点,选择 Properties,并在对话 框的左窗格中选择 Run 模式。注意,已将主类设置为 acrostic. Main。 2、在 Arguments 字段中输入 However we all feel zealous 并 单击 OK。 19

编译和运行项目 4. 2 Java的多态 运行主项目 1、从 Run 菜单选择 Run > Run Main Project (F 编译和运行项目 4. 2 Java的多态 运行主项目 1、从 Run 菜单选择 Run > Run Main Project (F 6)。双击 Output 窗口使它最大化,以便能看到所有的输出。注意, Ant 先构建 My. Lib. jar,然后使用它编译 My. App。 最后, 它从程序打印输出 Result = Hello(作为参数传递给程序 的短语的 acrostic)。 2、选择 Files 窗口并展开 My. App 项目文件夹。构建类文件 位于 build 文件夹中。 按 F 6 再次运行程序。什么新内容也不用编译,程序仍可运 行。 20

编译和运行项目 4. 2 Java的多态 清除和构建项目 1、选择 Build > Clean and Build Main Project (Shift-F 编译和运行项目 4. 2 Java的多态 清除和构建项目 1、选择 Build > Clean and Build Main Project (Shift-F 11)。 My. Lib 项目和 My. App 项目的清除和重新都是整个过程 的组成部分。 2、在 Projects 窗口中右键单击 My. Lib 项目节点,并选择 Clean Project。此操作将清除 My. Lib 项目 构建个别项目 1、在 Projects 窗口中右键单击 My. Lib 项目节点。 2、从上下文菜单选择 Build Project。 21

编译和运行项目 4. 2 Java的多态 生成 Javadoc 1、选择 My. Lib 项目。 2、从 IDE 的主菜单选择 Build 编译和运行项目 4. 2 Java的多态 生成 Javadoc 1、选择 My. Lib 项目。 2、从 IDE 的主菜单选择 Build > Generate Javadoc for Project "My. Lib"。 IDE 将在 Output 窗口中显示 Javadoc 输出, 此时显示 Javadoc 的 Web 浏览器将打开。 22

测试和调试项目 目标 继承与多态 现在我们将使用 JUnit 为项目创建和运行测试,然 后在 IDE 调试器中运行它以检查错误。 创建 JUnit 测试 1、右键单击 Projects 测试和调试项目 目标 继承与多态 现在我们将使用 JUnit 为项目创建和运行测试,然 后在 IDE 调试器中运行它以检查错误。 创建 JUnit 测试 1、右键单击 Projects 窗口中的 Lib. Class. java 节点,并选择 Tools >Create JUnit Tests (Ctrl-Shift-U)。单击 OK 使用默 认值选项运行命令。IDE 将在 Test Packages 下创建 org. me. mylib 包和 Lib. Class. Test. java 文件。 Graphic{PI, area(), draw()} 2、在 Lib. Class. Test. java 中,删除 test. Acrostic 方法的主体, 并键入或粘贴以下内容: System. err. println("Running test. Acrostic. . . "); String result = Lib. Class. acrostic(new String[] {"fnord", "polly", "tropism"}); assert. Equals("Correct value", "foo", result); 23 3、按 Ctrl-S 保存文件。

测试和调试项目 继承与多态 运行 JUnit 测试 1、选择 My. Lib 项目节点并选择 Run > Test 测试和调试项目 继承与多态 运行 JUnit 测试 1、选择 My. Lib 项目节点并选择 Run > Test "My. Lib" (Alt-F 6)。 My. Lib (test) 选项卡将在 Output 窗口中打开。编译和运行 JUnit 测试案例。JUnit 测试结果显示测试通过。 2、还可以运行单个测试文件,而不是测试整个项目。在 Source Editor 中选择 Lib. Class. java 选项卡并从 Run 菜单选择 Run > Run File > Test "Lib. Class. java"。 24

测试和调试项目 继承与多态 调试项目 1、在 Lib. Class. java 文件中,转到 acrostic 方法并将插入符号置于 b. append(args[i]. char. At(i)); 测试和调试项目 继承与多态 调试项目 1、在 Lib. Class. java 文件中,转到 acrostic 方法并将插入符号置于 b. append(args[i]. char. At(i)); 中的任何位置。 b. append(args[i]. char. At(i)); . 然后按 Ctrl-F 8 设置断点。 2、选择 Run > Debug Main Project (F 5)。IDE 将打开 Debugger 窗 口并在调试器中运行项目,直到到达断点。 3、选择 Local Variables 窗口并展开 args 节点。字符串数组包含 作为命令参数输入的短语。 4、单击 具栏中的 Step Into (F 7) 对程序进行单步调试,并观察 构造的 acrostic。 当程序到达结尾时,调试器窗口将关闭。 25

Net. Beans 5. 0集成开发环境 FGUI F 生成器 (Matisse) Net. Beans IDE 5. 0 中的 Net. Beans 5. 0集成开发环境 FGUI F 生成器 (Matisse) Net. Beans IDE 5. 0 中的 GUI 构建 26

Net. Beans IDE 5. 0 中的 GUI 构建 继承与多态 任务 名为 Contact. Editor 的 Net. Beans IDE 5. 0 中的 GUI 构建 继承与多态 任务 名为 Contact. Editor 的 应用程序创建图形用户 界面 (GUI)。 布置一个 GUI 前端, 使用该前端可以查看和 编辑员 数据库中所包 含的个人联系信息。 27

Net. Beans IDE 5. 0 中的 GUI 构建 继承与多态 目标 在本教程中,您将学会如何: 使用 GUI Builder Net. Beans IDE 5. 0 中的 GUI 构建 继承与多态 目标 在本教程中,您将学会如何: 使用 GUI Builder 界面 创建 GUI 容器 添加组件 调整组件大小 对齐组件 调整组件锚定 设置组件自动调整大小行为 编辑组件属性 Net. Beans 的新 GUI Builder 消除了构建 GUI 的困难,允许简单 地将组件置于需要它们的位置来布置窗体。 28

创建项目 Net. Beans IDE 5. 0 中的 GUI 构 继承与多态 建 IDE 项目由一组 Java 创建项目 Net. Beans IDE 5. 0 中的 GUI 构 继承与多态 建 IDE 项目由一组 Java 源文件和与其关联的元数据构成,它包 括特定于项目的属性文件、控制构建和运行设置的 Ant 构建脚 本和将 Ant 目标映射为 IDE 命令的 project. xml 文件。Java 应 用程序往往由多个 IDE 项目组成,为了简单起见,我们将构建 一个全部存储在单个项目中的简单应用程序。 1. 选择 File > New Project。或单击 IDE 具栏中的 New Project 图标。 2. 在 Categories 窗格中,选择 General 节点,在 Projects 窗 格中,选择 Java Application。单击 Next。 3. 在 Project Name 字段中输入 Contact. Editor 并指定项目位 置。 4. 确保选中 Set as Main Project 复选框,如果已选中 Create Main Class,则取消选中它。 5. 单击 Finish。 29

创建 GUI 容器 Net. Beans IDE 5. 0 中的 GUI 构 继承与多态 建 创建一个 创建 GUI 容器 Net. Beans IDE 5. 0 中的 GUI 构 继承与多态 建 创建一个 Java 容器,在其中放置其他必需的 GUI 组件。我们 将使用 JFrame 组件构建容器,并将容器置于新包中。 1. 在 Projects 窗口中,右键单击 Contact. Editor 节点并选择 New > JFrame Form。 2. 输入 Contact. Editor. UI 作为 Class Name。 3. 输入 my. contacteditor 作为包。 4. 单击 Finish。 IDE 在 Contact. Editor. UI. java 应 用 程 序 中 创 建 Contact. Editor. UI 窗体和 Contact. Editor. UI 类,并从 GUI Builder 打 开 Contact. Editor. UI 窗 体 。 注 意 , my. contacteditor 包将替换默认包。 l 30

Net. Beans IDE 5. 0 中的 GUI 构建 熟悉 GUI Builder Palette( 调板) 设计区域 Net. Beans IDE 5. 0 中的 GUI 构建 熟悉 GUI Builder Palette( 调板) 设计区域 Inspector( 检查器) 属性窗口 31

熟悉 GUI Builder Net. Beans IDE 5. 0 中的 GUI 构建 设计区域。用于创建和编辑 Java GUI 熟悉 GUI Builder Net. Beans IDE 5. 0 中的 GUI 构建 设计区域。用于创建和编辑 Java GUI 窗体的 GUI Builder 的主 窗口。 具栏的 Source and Design 切换按钮允许查看类的源代 码或其 GUI 组件的图形视图。其他 具栏按钮提供常见命令的 便捷访问,如在 Selection and Connection 模式之间选择、对齐 组件、设置组件自动调整大小行为,以及预览窗体。 Inspector(检查器)。按照树层次结构提供应用程序中所有组 件(可视的和非可视的)的表示形式。 Palette(调板)。可自定义的可用组件的列表,包含 JFC/Swing、AWT and Java. Beans 组件的选项卡,以及布局管理 器。此外,可以使用 Customizer 创建、移除和重排 Palette 中显 示的类别。 属性窗口。显示在 GUI Builder、Inspector 窗口、Projects 窗口 或 Files 窗口中当前选择的组件的属性。 32

主要特征 Net. Beans IDE 5. 0 中的 GUI 构建 自由设计: 在 IDE 的 GUI 主要特征 Net. Beans IDE 5. 0 中的 GUI 构建 自由设计: 在 IDE 的 GUI Builder 中,可以通过将组件简单地 置于需要的位置来构建窗体,GUI Builder 可以断定需要的布 局管理器,然后自动生成代码。 自动组件定位(抓取): 向窗体添加组件时,GUI Builder 将提 供可视化反馈,帮助根据操作系统的外观定位组件。 可视化反馈 : GUI Builder 还提供关于组件锚定和链接关系的 可视化反馈。这些指示符可以让您快速识别对 GUI 的显示方式 和运行时行为有影响的各种定位关系和组件固定行为。 布置窗体时,GUI Builder 将提供可视化准线,给出最佳间距 和组件对齐建议。在后台,GUI Builder 将设计决策转换为可 用的 UI,这种 UI 是使用新 Group. Layout layout 管理器及其 他 Swing 构造实现的。因为它使用动态布局模型,所以使用 GUI Builder 构建 GUI 的行为在运行时根据需要进行,能通过 调整以适应任何更改,而不改变已定义组件之间关系。 33 l

添加组件:基础 Net. Beans IDE 5. 0 中的 GUI 构建 添加两个允许使用有标题边框来群集化 UI 组件的 Jpanel。 添加 添加组件:基础 Net. Beans IDE 5. 0 中的 GUI 构建 添加两个允许使用有标题边框来群集化 UI 组件的 Jpanel。 添加 Jpanel : 1. 在 Palette 窗口中,通过单击和释放鼠标按键从 Swing 类 别选择 JPanel 组件。 2. 将指针移动到 GUI Builder 中窗体的左上角。当组件位置接 近容器的左上边缘时,水平和垂直对齐准线将出现,指示较 佳的边距。在窗体中单击,将 JPanel 置于此位置。 JPanel 组件在 Contact. Editor. UI 窗体中以橙色突出显示的 方式表示被选中,释放鼠标按键后,显示组件锚定关系的小 型指示器出现,同时在 Inspector 窗口中显示相应的 JPanel 节点。 调整 Jpanel 大小 : 在JPanel 边缘上的缩放柄上单击并保持,然后拖动直到窗体边 缘附近的虚线对齐准线出现。释放缩放柄以调整组件的大小。 34 l

添加组件:基础 Net. Beans IDE 5. 0 中的 GUI 构建 添加第二个 Jpanel 后,调整其大小,使其充满窗体的剩余垂 直空间。 l向 添加组件:基础 Net. Beans IDE 5. 0 中的 GUI 构建 添加第二个 Jpanel 后,调整其大小,使其充满窗体的剩余垂 直空间。 l向 Jpanel 添加标题边框: l 1. 选择 GUI Builder 中上面的 Jpanel。 2. 在 Properties 窗口,单击 Border 属性旁边的省略号按钮 (. . . )。在显示的 Jpanel 的 Border 编辑器中,选择 Available Borders 窗格中的 Titled. Border 节点。 3. 在下面的 Properties 窗格中,为 Title 属性输入 Name。 4. 单击 Font 属性旁边的省略号 (. . . ),为 Font Style 选择 Bold,并为 Size 输入 12。单击 OK 退出对话框。 5. 选择下面的 JPanel 并重复执行步骤 2 到 5,但是通过右 键单击 JPanel 并使用弹出菜单来访问 Properties 窗口。 为 Title 属性输入 E-mail。 35

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 向窗体添加个别组件: 1. 向窗体添加 JLabel 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 向窗体添加个别组件: 1. 向窗体添加 JLabel : (1)在 Palette 窗口中,从 Swing 类别选择 JLabel 组件。 将指针移动到我们以前添加的 Name JPanel 之上。当准线 出现,指示将 JLabel 置于 JPanel 的左上角,同时在左 上边缘留下较小边距时,单击以放置标签。 将 JLabel 添 加到窗体,将表示组件的相应节点添加到 Inspector 窗口。 (2)编辑 Jlabel 的显示文本: 双击 JLabel 选择其显示文本。键入 First Name: : 并按 Enter 键。 此时将显示 Jlabel 的新名称,并且组件的宽 度随编辑的结果调整。 2. 向窗体添加 JText. Field : 在 Palette 窗口中,选择 JText. Field 组件。移动指针,使 其紧靠First Name: Jlabel 的右边。当水平准线出现,并 36 使用垂直基线建议两个组件之间的间距时,单击放置

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 向窗体添加个别组件: 3. 在刚才添加的组件的右边紧挨着添加其他 JLabel 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 向窗体添加个别组件: 3. 在刚才添加的组件的右边紧挨着添加其他 JLabel and Jtext. Field,如下图所示。这一次输入 Last Name: 作为 Jlabel 的显示文本,并暂时让 Jtext. Field 的占位符文本 保持原样。 l 向窗体添加多个组件: 按住 Shift 键选取和放下组件. 按住 Shift 键不要松开,立 即单击将另一个 JLabel 放在第一个的右边。确保在放置 第二个 Jlabel 前释放 Shift 键。如果忘记在放置最后一 个 JLabel 前释放 Shift 键,则请按 Esc 键。 l 插入组件: 37

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 对齐组件:对齐 Jlabel 的两个列,以便其右边缘在一条直线上。 1. 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 对齐组件:对齐 Jlabel 的两个列,以便其右边缘在一条直线上。 1. 在右边窗体中选择 First Name: and Title: Jlabel。 2. 单击 具栏中 Column 按钮中的 Align Right ( )。或 者,右键单击弹出菜单的 Column 中的任何一个并选择 Align > Right。 3. 再为 Last Name: and Nickname: Jlabel 重复此步骤。 Jlabel 的位置将改变,以便对齐其显示文本的右边缘。锚定 关系将更新,以指示组件已分组。 l 设置组件的调整大小行为: 按住 Ctrl 键单击两个插入的 JText. Field 组件 , 右键单击它们中 的任意一个选择 Auto Resizing > Horizontal。 JText. Fields 将 被设置为在运行时水平调整大小。对齐准线和锚定指示器 将被更新,从而提供组件关系的可视化反馈。 38

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 将组件设置为相同大小:。 1. 按住 Ctrl 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 将组件设置为相同大小:。 1. 按住 Ctrl 键单击窗体中的全部四个 Jtext. Field 以选中它 们。 2. 右键单击它们中的任意一个并从弹出菜单选择 Set Default Size。 所有这些 Jtext. Field 将被设置为相同的 宽度,并且指示器将被添加到每个 Jtext. Field 的顶部边 缘,提供组件关系的可视化反馈。 l 添加E-Mail面板中的组件 只要向窗体添加组件,IDE 就使用准线建议目标外观的首选位 置。放置后,新组件还将被锚定到最近的容器边缘或组件, 以便在运行时维护组件关系。 39

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 添加将显示 Contact. Editor 的整个联系人列表的 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 添加将显示 Contact. Editor 的整个联系人列表的 Jlist。 1. 在 Palette 窗口中,从 Swing 类别选择 JList 组件。 2. 移动指针,使其紧靠刚才添加的 E-mail Address Jlabel 的 下边。当准线出现,指示将 Jlist 的左上边缘沿 Jpanel 的左边缘和上面的 Jlabel 与首选边距对齐时,单击以放置 Jlist。 3. 将 Jlist 的右缩放柄拖到封闭的 JPanel 的右边,直到 建议对齐准线出现为止。 JList 将进入对齐准线指定的位 置,并在 Inspector 窗口中显示其相应节点。 l添加、对齐和编辑多个按钮的显示文本 1. 在 Palette 窗口中,选择 JButton 组件。 2. 在下面的 Jpanel 中,将 JButton 移动到 E-mail Address JText. Field 的右边缘。当准线出现,按住 Shift 键单击以沿 Jframe 的右边缘放置第一个按钮。释放鼠标 40 按键时,Jtext. Field 的宽度将收缩以适应 Jbutton。

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 添加、对齐和编辑多个按钮的显示文本 3. 将指针移动到下面的 JPanel 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 添加、对齐和编辑多个按钮的显示文本 3. 将指针移动到下面的 JPanel 中的 JList 的右上角。当准线 出现,指示将 JButton 的右上边缘与 JList 对齐时,按住 Shift 键单击以沿 Jframe 的右边缘放置第二个按钮。 4. 在刚才添加的两个 Jbutton 的下边添加两个其他 Jbutton 创建一个列。确保使用建议的间距一致地放置 Jbutton。 5. 双击每个 Jbutton,为它们的每个名称输入文本。分别为 Add/Edit/Remove/As Default。 JButton 组件将进入对齐 准线所指定的位置。按钮的宽度将更改以适应新名称。 6. 将组件设置为相同大小: 通过按住 Ctrl 键单击选择全部四个 Jbutton。右键单击其中之一,并从弹出菜单选择 Same Size > Same Width。 41

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 缩进: 1. 将名为 Mail 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 缩进: 1. 将名为 Mail Format 的 JLabel 添加到 Jlist 下的窗体。确保 该标签与上面的 JList 左对齐。 2. 选择 JRadio. Button 组件。将指针移动到我们刚才添加的 JLabel 之下。当准线出现,指示将 Jradio. Button 的左边 缘与 Jlabel 对齐时,轻轻向右移动 JRadio. Button 直到 二级缩进准线出现为止。按住 Shift 键单击 3. 将指针移动到第一个 Jradio. Button 的右边。按住 Shift 键单击放置第二个和第三个 Jradio. Button, 4. 双击每个 JRadio. Button,为它们的每个名称输入所需的文本。 5. 分别为三个单选按钮命名为HTML/Plain Text/Custom。 至 此,已将三个 Jradio. Button 添加到窗体并在 Mail Format Jlabel 下进行了缩进。 42

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 将 Jradio. Button 添加到 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 将 Jradio. Button 添加到 Button. Group 1. 在 Palette 窗口中,从 Swing 类别中选择 Button. Group 组件。 2. 在 GUI Builder 设计区域的任意位置单击,以将 Button. Group 组件添加到窗体。注意,Button. Group 中窗 体中不显示,但在 Inspector 的 Other Component 区域 是可见的。 3. 选择窗体中的全部三个 Jradio. Button。 4. 在 Properties 窗口中,从 button. Group 属性组合框选 择 button. Group 1。 43

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 添加和编辑按钮的显示文本 1. 向下拖动 JFrame 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 添加和编辑按钮的显示文本 1. 向下拖动 JFrame 的下边缘。这将在 JFrame 的边缘和 JPanel 的边缘之间留出 OK 和 Cancel 按钮的空间。 2. 选择 JButton 组件。将指针移动到电子邮件 JLabel 之 下的窗体上。当准线出现,指示将 Jbutton 的右边缘与下 面的 Jframe 的右下角对齐时,单击以放置按钮。 3. 将另一个 JButton 添加到第一个的左边,确保沿 Jframe 的下边缘使用建议的间距放置它。。 4. 双击每个 JButton 选择其显示文本。分别为OK/Cancel。 5. 将两个 Jbutton 设置为相同的大小,方法是选择这两个按 钮,右键单击任意一个并从弹出菜单选择 Same Size > Same Width。 44

添加组件:基础 l 是删除各个组件中的占位符文本。 注意,在大致完成窗体时,移除占位符文本是一种避免产 生组件对齐和锚定关系问题的有用技巧,大多数开发人员 通常在布置窗体的过程中移除此文本。Combo. Box 和 JList 中的占位符项目留到以后的教程中介绍。 l l Net. Beans 添加组件:基础 l 是删除各个组件中的占位符文本。 注意,在大致完成窗体时,移除占位符文本是一种避免产 生组件对齐和锚定关系问题的有用技巧,大多数开发人员 通常在布置窗体的过程中移除此文本。Combo. Box 和 JList 中的占位符项目留到以后的教程中介绍。 l l Net. Beans IDE 5. 0 中的 GUI 构建 预览 GUI 。 l 单击 GUI Builder 具栏中的 Preview Form 按钮 ( ) 在运行时预览窗体。窗体将在它自己的窗口中打开,允许 在构建和运行前先测试它。 45

部署 GUI 应用程序 Net. Beans IDE 5. 0 中的 GUI 构建 因为 Net. Beans 部署 GUI 应用程序 Net. Beans IDE 5. 0 中的 GUI 构建 因为 Net. Beans 5. 0 GUI Builder 依赖于 Swing Layout Extensions 库,您可以在系统的以下位置找到 Swing Layout Extensions 库的 JAR 文件: Net. Beans_installation_folder/ide 6/modules/ext/swinglayout-installed_version. jar l l 分发和运行独立的 GUI 应用程序 要确保 GUI 应用程序将在运行时自动使用 Swing Layout Extensions 库,构建项目时,IDE 自动将 JAR(及项目类 路径上的所有其他 JAR 文件)复制到 dist/lib 文件夹。 IDE 还将每个 JAR 文件添加到 Class-Path 元素(即应用 程序 JAR 文件的 manifest. mf 文件)中。 46

添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 准备将 GUI 应用程序分发到 IDE 添加组件:基础 l Net. Beans IDE 5. 0 中的 GUI 构建 准备将 GUI 应用程序分发到 IDE 之外的步骤: 1. 将项目的 dist 文件夹(包括 lib 文件夹)压缩为 ZIP 归 档文件。 2. 从命令行运行独立 GUI 应用程序的步骤: 导航到项目的 dist 文件夹。 键入以下内容: java -jar . jar Build Main Project(F 11) compile: Created dir: E: myjavaContact. Editordist Building jar: E: myjavaContact. EditordistContact. Editor. jar To run this application from the command line without Ant, try: java -jar "E: myjavaContact. EditordistContact. Editor. jar" 47 l

4. 3 抽象类与接口 继承与多态 例4. 2. 1 Graphic. Demo. java abstract class Graphic{ public 4. 3 抽象类与接口 继承与多态 例4. 2. 1 Graphic. Demo. java abstract class Graphic{ public static final double PI=3. 1425926; double area(){return 0; }; abstract void draw(); } class Point extends Graphic{ protected double x, y; public Point(double x, double y) { this. x=x; this. y=y; } void draw(){ System. out. println("Draw a point at"+to. String()); } public String to. String(){ return"("+x+", "+y+")"; } } 48

4. 3 抽象类与接口 class Circle extends Graphic{ protected Point o; protected double r; public 4. 3 抽象类与接口 class Circle extends Graphic{ protected Point o; protected double r; public Circle(Point o, double r){ this. o=o; this. r=r; } double area(){ return PI*r*r; } void draw(){ System. out. println("Draw a circle at"+o. to. String()+"and r="+r); }} public class Graphic. Demo{ public static void main(String []args){ Graphic []g=new Graphic[3]; g[0]=new Point(10, 10); g[1]=new Line(new Point(10, 10), new Point(20, 30)); g[2]=new Circle(new Point(10, 10), 4); for(int i=0; i

4. 3 抽象类与接口 继承与多态 例4. 2. 1 Graphic. Demo. java 子类对象可以被视为其父类的一个对象 l 父类对象不能被当做是其某一子类的对象 l 4. 3 抽象类与接口 继承与多态 例4. 2. 1 Graphic. Demo. java 子类对象可以被视为其父类的一个对象 l 父类对象不能被当做是其某一子类的对象 l 可以将子类对象传递给父类对象 l父类引用可以转换为子类的引用 l 50

4. 3 抽象类与接口 继承与多态 注意: 抽象类不能被实例化,即不能用new关键字产生抽 象类的对象。 l 抽象方法只需声明,不需实现。 l 含有抽象方法的类必须声明为抽象类。 l抽象类的子类必需覆盖所有的抽象方法后才能被实 例化,否则这个子类还是个抽象类。 l. 4. 3 抽象类与接口 继承与多态 注意: 抽象类不能被实例化,即不能用new关键字产生抽 象类的对象。 l 抽象方法只需声明,不需实现。 l 含有抽象方法的类必须声明为抽象类。 l抽象类的子类必需覆盖所有的抽象方法后才能被实 例化,否则这个子类还是个抽象类。 l. Abstract和final修饰符不能同时出现在类的声明中。 l 51

4. 3 抽象类与接口 继承与多态 接口 如果抽象类中所有的方法都是抽象的,可以将这个类 定义成接口,接口是抽象方法和常量值的定义的集合, 从本质上讲接口是一种特殊的抽象类,这种抽象类中 只包含常量和方法的定义,而没有变量和方法的实现。 其定义如下: [public] interface 接口名 [extends 4. 3 抽象类与接口 继承与多态 接口 如果抽象类中所有的方法都是抽象的,可以将这个类 定义成接口,接口是抽象方法和常量值的定义的集合, 从本质上讲接口是一种特殊的抽象类,这种抽象类中 只包含常量和方法的定义,而没有变量和方法的实现。 其定义如下: [public] interface 接口名 [extends 父接口名列表] //接口声明 {//接口体 ……} 52

4. 3 抽象类与接口 继承与多态 例 public interface Runner{ int ID=1; void run(); } interface 4. 3 抽象类与接口 继承与多态 例 public interface Runner{ int ID=1; void run(); } interface Animal extends Runner{ void breathe(); } interface Flyer{ void fly(); } interface Animal 1 extends Runer, Flayer{ void Swimming(); } 定义接口 接口可以继承 接口可以多 继承 53

4. 3 抽象类与接口 继承与多态 定义接口 小结 ü接口中的方法不能有实现。(void run(){}//错误) ü接口可以多继承。子接口也可以对父接口的方法和 变量进行覆盖。 ü接口中的方法隐式声明为public和abstract。 ü接口中的变量隐式声明为public、static和final。即 常量 ü接口不存在构建器。 4. 3 抽象类与接口 继承与多态 定义接口 小结 ü接口中的方法不能有实现。(void run(){}//错误) ü接口可以多继承。子接口也可以对父接口的方法和 变量进行覆盖。 ü接口中的方法隐式声明为public和abstract。 ü接口中的变量隐式声明为public、static和final。即 常量 ü接口不存在构建器。 ü利用接口interface可以实现多继承,而且能避免多 继承的缺点,因为接口没有任何实现所以不存在危 险性。 54

4. 3 抽象类与接口 继承与多态 接口实现 某个类为接口中的抽象方法书写语句并定义实在的方 法体,称为实现这个接口,使用implements关键字。 class Fish implements Animal{ public void run(){ 4. 3 抽象类与接口 继承与多态 接口实现 某个类为接口中的抽象方法书写语句并定义实在的方 法体,称为实现这个接口,使用implements关键字。 class Fish implements Animal{ public void run(){ System. out. println("fish is Swimming"); 重新定义接 } 口中所有的 public void breathe(){ 方法 System. out. println("fish is bubbling"); } } abstract Land. Animal implements Animal{ 定义了接口中的 部分方法,仍然 public void breathe(){ 是一个抽象类 System. out. println("fish is bubbling"); } } 55

4. 3 抽象类与接口 继承与多态 接口实现 class Bird implements Runner, Flyer{ public void run(){ System. 4. 3 抽象类与接口 继承与多态 接口实现 class Bird implements Runner, Flyer{ public void run(){ System. out. println("bird is running"); } public void fly(){ System. out. println("bird is flying"); } } 一个类可以 实现多个接 口 56

4. 3 抽象类与接口 继承与多态 接口实现 主类定义 public class Test. Interface{ public static void main(String 4. 3 抽象类与接口 继承与多态 接口实现 主类定义 public class Test. Interface{ public static void main(String []args){ Fish f=new Fish(); // Land. Animal l=new Land. Animal(); //错误 int j=0; j=Runner. ID; //正确,"类名. 静态成员" j=f. ID; //正确, "对象名. 静态成员", 继承来的 // f. ID=2; //出错,不能为final成员重新赋值 f. run(); f. breathe(); } } 57

4. 3 抽象类与接口 继承与多态 小结 ü实现一个接口就要实现该接口的所有方法(抽象类 除外) ü类在实现方法时,必须显式使用public修饰符。 ü接口中的方法都是抽象的。 ü多个无关的类可以实现同一个接口,一个类可以实 与抽象类的区别 现多个无关的接口。 ü抽象类中可以定义方法并赋予默认行为,接口中不 能。 4. 3 抽象类与接口 继承与多态 小结 ü实现一个接口就要实现该接口的所有方法(抽象类 除外) ü类在实现方法时,必须显式使用public修饰符。 ü接口中的方法都是抽象的。 ü多个无关的类可以实现同一个接口,一个类可以实 与抽象类的区别 现多个无关的接口。 ü抽象类中可以定义方法并赋予默认行为,接口中不 能。 ü抽象类中增加一个方法并赋予其默认行为,并不一 定要修改抽象类的继承类,而接口一旦修改,所有 实现接口的类都被破坏。 58

4. 3 抽象类与接口 继承与多态 实例应用 如:在图形界面程序中使用的Action. Listener就是系统定 义的接口。它代表了监听并处理动作事件的功能,其中包括 了一个抽象方法: public void action. Performed(Action. Event 4. 3 抽象类与接口 继承与多态 实例应用 如:在图形界面程序中使用的Action. Listener就是系统定 义的接口。它代表了监听并处理动作事件的功能,其中包括 了一个抽象方法: public void action. Performed(Action. Event e) 所有希望能够处理动作事件的类都必须具有 Action. Listener接 口 定 义 的 功 能 。 因 为 接 口 中 的 方 法 都 是 没 有方法体的抽象方法。 例4 -8(Implement. Action. Listener. java) 59

4. 3 抽象类与接口 继承与多态 public class Implement. Action. Listener extends Applet implements Action. Listener 4. 3 抽象类与接口 继承与多态 public class Implement. Action. Listener extends Applet implements Action. Listener { Text. Field password=new Text. Field(“我是密码”); Button btn=new Button(“隐藏”); public void init() 实现Action. Listener接口 { add(password); add(btn); 重新定义 btn. add. Action. Listener(this); action. Performed() 方法 } public void action. Performed(Action. Event e) { password. set. Echo. Char(“*”); password. select. All(); } 60 }

4. 3 抽象类与接口 实例应用 继承与多态 Action. Listener的父接口 public abstract interface Action. Listener extends Event. 4. 3 抽象类与接口 实例应用 继承与多态 Action. Listener的父接口 public abstract interface Action. Listener extends Event. Listener { public void action. Performed(Action. Event e); } 缺省的abstract方法 61

4. 4 包 何为包 继承与多态 ØJava通过引入包(package)机制,提供类的多层类命 名空间,解决类的存放和管理问题。 Ø包是一种松散的类的集合,通常把需要在一起 作 的类放在一个包中。 Ø缺省情况下,系统会为每一个. java源文件创建一个 无名包,该java文件中定义的所有类都属于这个无名 包,不能被其他包中的类引用。 4. 4 包 何为包 继承与多态 ØJava通过引入包(package)机制,提供类的多层类命 名空间,解决类的存放和管理问题。 Ø包是一种松散的类的集合,通常把需要在一起 作 的类放在一个包中。 Ø缺省情况下,系统会为每一个. java源文件创建一个 无名包,该java文件中定义的所有类都属于这个无名 包,不能被其他包中的类引用。 62

4. 5 包 继承与多态 创建包 创建有名包: package 包名 实际上创建包就是在当前文件夹下创建一个 子文件夹,以便包含存放在这个包中包含的所有 类的. class文件。 例P 89 4. 5 包 继承与多态 创建包 创建有名包: package 包名 实际上创建包就是在当前文件夹下创建一个 子文件夹,以便包含存放在这个包中包含的所有 类的. class文件。 例P 89 package edu; //当前文件夹下创建一个文件夹,以便存放 这个包中包含的所有类的. class文件 package edu. jmdx; //当前文件夹下创建了两个文件夹。 edu jmdx //当前包中的所有类存于此文件夹 63

4. 5 包 例 继承与多态 package edu. jmdx; public class Testpackage{ public static void 4. 5 包 例 继承与多态 package edu. jmdx; public class Testpackage{ public static void main(String args[]){ new Test(). print(); } } class Test{ public void print() { System. out. println("useing packageprogram"); } 形成的字节码文件 } 64

继承与多态 在命令行方式,使用java Testpackage,执行时会出错? 包的引用 ØE: myclassch 04目录下执行:java edu. jmdx. Testpackage Ø使用包名、类名前缀。在当前目录下创建Test 1. java文件 package 继承与多态 在命令行方式,使用java Testpackage,执行时会出错? 包的引用 ØE: myclassch 04目录下执行:java edu. jmdx. Testpackage Ø使用包名、类名前缀。在当前目录下创建Test 1. java文件 package edu. jmdx; public class Test 1{ public void print() { System. out. println("useing packageprogram"); } } 65

包的引用 继承与多态 在当前目录下创建Testpackage 1. java 执行:java Testpackage 1 public class Testpackage 1{ public static 包的引用 继承与多态 在当前目录下创建Testpackage 1. java 执行:java Testpackage 1 public class Testpackage 1{ public static void main(String args[]){ new edu. jmdx. Test 1(). print(); } } Ø加载需要使用的类或包(import),将Testpackage. java修改 import edu. jmdx. Test; //或import edu. jmdx. *; public class Testpackage 1{ public static void main(String args[]){ new Test 1(). print(); } } 66

包的引用 继承与多态 编译器在编译时,会自动在以下位置查找需要用到的 类文件 Ø当前目录 Ø系统环境变量classpath指定的目录,称为类路径 ØJDK的运行库rt. jar(JDK安装目录的jrelib中 在命令行方式,常用命令。 Øclasspath: 指明所有缺省的类字节码文件路径 Øset classpath 显示当前字节码路径 包的引用 继承与多态 编译器在编译时,会自动在以下位置查找需要用到的 类文件 Ø当前目录 Ø系统环境变量classpath指定的目录,称为类路径 ØJDK的运行库rt. jar(JDK安装目录的jrelib中 在命令行方式,常用命令。 Øclasspath: 指明所有缺省的类字节码文件路径 Øset classpath 显示当前字节码路径 Øset classpath=%classpath%; E: myclassch 04; 添加字节码路径 Øjavac –d. Testpackage. java 改变生成的字节码的路径。 Øjavac -classpath. ; e: myjava Testpackage. java //指定类文件的 Testpackage. java 搜索路径 67

包的小结 继承与多态 Ø包(package)是一组相关类和接口的集合, 通常称为类库,使 用类的多层类命名空间,解决类的存放和管理问题。 Ø同一个包中的类在缺省情况下可以互相访问,使用包可以有 利于实现不同程序间的复用。 Ø说明为public的类、方法才可以在其它包中被访问。此时要 使用类的完整名称, 或使用import引入. Ø 若类和方法被说明为protected,则其它包中只有它的子类 才可以访问它们。 Ø缺省情况下,系统会为每一个. 包的小结 继承与多态 Ø包(package)是一组相关类和接口的集合, 通常称为类库,使 用类的多层类命名空间,解决类的存放和管理问题。 Ø同一个包中的类在缺省情况下可以互相访问,使用包可以有 利于实现不同程序间的复用。 Ø说明为public的类、方法才可以在其它包中被访问。此时要 使用类的完整名称, 或使用import引入. Ø 若类和方法被说明为protected,则其它包中只有它的子类 才可以访问它们。 Ø缺省情况下,系统会为每一个. java源文件创建一个无名包, 该java文件中定义的所有类都属于这个无名包。 ØClasspath设置一定是指向顶层包名所对应的父目录, (如 E: myjava), 而 不 是 指 向. class文 件 所 在 的 目 录 , 注 意 (. class)文件的搜索路径。 68

Java常见系统包 包 java Java 具包的层次结构 java. lang. math java. lang. system java. lang … Java常见系统包 包 java Java 具包的层次结构 java. lang. math java. lang. system java. lang … java. io 类 包含能提供多种I/O 功能的类 java. util … 包含一些实用 具类,时间、日历, 散列表、堆栈、可变数组等 java. applet … 包含applet运行所需的一些类 java. awt … java. swing … 包含抽象窗口 具集的类,用语GUI 编程 抽象图形用户接口包,增强AWT 前三种包为java的基础包,后三种包称为应用包。 69

Java. lang包 6 java基本可重用类 每个java类都隐含语句import java. lang. *; 简单实 现了java程序的运行平台。 Object类:类库中所有类的父类 基本数据类型类:支持数字类型的转换和字符串操作 Class类:为运行时搜索的信息,如对instanceof操作符的支持 Math类:提供象PI和E这样的数学函数及各种函数 Java. lang包 6 java基本可重用类 每个java类都隐含语句import java. lang. *; 简单实 现了java程序的运行平台。 Object类:类库中所有类的父类 基本数据类型类:支持数字类型的转换和字符串操作 Class类:为运行时搜索的信息,如对instanceof操作符的支持 Math类:提供象PI和E这样的数学函数及各种函数 System: 提供对操作系统的访问 Runtime类::提供对操作系统的访问,使应用程序与环境协调 Thread类:提供对多线程的支持 70

6. 1 Java语言包 数据类型类 ◆提供了用来操作和处理它对应的基本数据类型量 如:Integer类: 两个属性:MAX_VALUE域和MIN_VALUE 规定了int类型量的最大值和最小值 构造方法:public 类型转换:public Integer(int value)和 Integer(String s) 6. 1 Java语言包 数据类型类 ◆提供了用来操作和处理它对应的基本数据类型量 如:Integer类: 两个属性:MAX_VALUE域和MIN_VALUE 规定了int类型量的最大值和最小值 构造方法:public 类型转换:public Integer(int value)和 Integer(String s) int. Value() long. Value() double. Value() 其它数据类型中的方法及作用 与Integer类中的方法相近 71

6. 1 Java语言包 数据类型类 类型转换:字符串与int量的相互转换方法 public String to. String()//当前Integer对象对应的int量 转化成字符串 public static int parse. 6. 1 Java语言包 数据类型类 类型转换:字符串与int量的相互转换方法 public String to. String()//当前Integer对象对应的int量 转化成字符串 public static int parse. Int(String s)//类的方法,将 字符串转化成int量 如:int I=Integer. parse. Int(“ 123”); public static Integer Value. Of(String s)//类的方法, 将字符串转化成Integer对象 int I=Integer. value. Of(“ 123”). int. Value(); //作用与 上一个完全相同,处理过程中生成一个临时的Integer对象 Float f=Float. value. Of(“ 12. 4”). float. Value(); //将“ 12. 4” 转化为 浮点数 12. 3, 必须这样做 类的 方法 对象的 方法 72

Math类 6. 1 Java语言包 完成一些常用的数学运算,提供了实现实现标准 数学函数的方法,这些方法都是static的类方法。 int i=9, j=7, k; k=Math. max(i, j); int Math类 6. 1 Java语言包 完成一些常用的数学运算,提供了实现实现标准 数学函数的方法,这些方法都是static的类方法。 int i=9, j=7, k; k=Math. max(i, j); int i=(int)(Math. random()*10)+1; //求1~10之间的随机数 ◆主要属性和方法:见P 126页 73

System类 6. 1 Java语言包 提供了标准输入输出、运行时的系统信息等重要 具,这些方法都是static的类方法。不能实例化 ◆用System类获取标准输入输出 属性:public static Print. Stream err; public static System类 6. 1 Java语言包 提供了标准输入输出、运行时的系统信息等重要 具,这些方法都是static的类方法。不能实例化 ◆用System类获取标准输入输出 属性:public static Print. Stream err; public static Input. Stream in; public static Print. Stream out; char c=System. in. read(); System. out. println(“Hello!Guys, ”); 74

System类 6. 1 Java语言包 提供了用来与运行java系统进行交互操作的方法。 ◆用System类的方法获取系统信息,完成系统操作 public static long current. Time. Millis(); //获取当前时刻的微秒数 public System类 6. 1 Java语言包 提供了用来与运行java系统进行交互操作的方法。 ◆用System类的方法获取系统信息,完成系统操作 public static long current. Time. Millis(); //获取当前时刻的微秒数 public static void exit(int status); //退出运行状态,并被状态信 息返回给虚拟机的操作系统。如:System. exit(0); public static void gc(); //强制调用java虚拟机的垃圾回收功能。 75

字符串类 6. 1 Java语言包 Java. lang提供了两种字符串类:String和String. Buffer类 5 String类 ◆用于创建静态字符串(创建字符串常量) String s= 字符串类 6. 1 Java语言包 Java. lang提供了两种字符串类:String和String. Buffer类 5 String类 ◆用于创建静态字符串(创建字符串常量) String s="Hello! " ;//使用字符串常量自动创建String实例。 String s= new String(String s) 通过String对象或字符串常量传递 给构造方法。如:String s=new String(“ABC”); public String(char value[]) 将整个字符数组赋给String构造方法。 public String(char value[], int offset, int count) 将字符数组一部分 赋给String构造方法,offset 为起始下标,count为子数组长度。 76

5 String类 字符串类 ◆字符串常量的操作 Øpublic int length();// 返回字符串的长度。 String s=“Hello!”; System. out. println(s. lenth()); 5 String类 字符串类 ◆字符串常量的操作 Øpublic int length();// 返回字符串的长度。 String s=“Hello!”; System. out. println(s. lenth()); //输出 6(一个字符 16 bit, Unicode) String s=“你好”; System. out. println(s. lenth()); //输出 2 Øpublic char. At(int index) ; //返回字符串位置index处的字符。 77

5 String类 ◆比较两个字符串 字符串类 Øpublic boolean equals(Object o) ; //比较两个字符串对象,相等 返回true,反之,返回false。 Øpublic int compare. 5 String类 ◆比较两个字符串 字符串类 Øpublic boolean equals(Object o) ; //比较两个字符串对象,相等 返回true,反之,返回false。 Øpublic int compare. To(String s);// 比较两个字符串字典顺序, 相等返回 0,s大于当前串返回一个负值,反之返回一个正值。 ØPublic boolean equals. Ignore. Case(String s); //不计字母大小写 String s 1=“Hello!Word”, s 2=“hello! Word”; boolean b 1=s 1. equals(s 2); boolean b 1=s 1. equals. Ignore. Case(s 2); String s=“abc”, s 1=“aab”, s 2=“abd”, s 3=“abc”; int i, j, k; i, j, k分别为 1, -1, 0 i=s. compare. To(s 1); j=s. compare. To(s 2); k=s. compare. To(s 3); 78

5 String类 字符串类 ◆ 判断字符串的前缀和后缀 Øpublic boolean starts. With(String prefix) ; //从当前字符串的起 始位置开始寻找字符串prefix。如发现匹配,返回true,否则, 返回false。 5 String类 字符串类 ◆ 判断字符串的前缀和后缀 Øpublic boolean starts. With(String prefix) ; //从当前字符串的起 始位置开始寻找字符串prefix。如发现匹配,返回true,否则, 返回false。 Øpublic boolean ends. With(String suffix) ; //如当前字符串的结尾 子串与suffix匹配,返回true,否则,返回false。 Ø设String对象s 是居民身份证号 if(s. ends. With(“ 0”)||s. ends. With(“ 2”)||s. ends. With(“ 4”)||s. ends. With(“ 6”)||s. ends. With(“ 8”)) {System. out. println(“女性“) ; } 79

5 String类 字符串类 ◆ 字符串的查找 Øpublic int index. Of(String str) ; //在当前字符串中寻找与str匹配 的子串,返回首次匹配的起始下标值,无匹配返回-1。 Øpublic 5 String类 字符串类 ◆ 字符串的查找 Øpublic int index. Of(String str) ; //在当前字符串中寻找与str匹配 的子串,返回首次匹配的起始下标值,无匹配返回-1。 Øpublic String substring(int begin. Index, int end. Index) 在当前字 符串中,求从起始位置begin. Index到结束位置end. Index的子串。 Øpublic int index. Of(int ch); //查找ch第一次出现的位置 Øpublic int index. Of(int ch, int from. Index); //自from. Index向后找 String s=“Java, Java. Script” {int i=-1; do{ i=s. index. Of((int )’a’, i+1); System. out. print(i+”t”); 运行结果: 1 3 6 8 -1 }while(i!=-1) 80

5 String类 字符串类 ◆ 连接字符串,字符串转换 Øpublic String concat(String str); // 将当前字符串与str连接,返 回连接后的字符串。 Øpublic String 5 String类 字符串类 ◆ 连接字符串,字符串转换 Øpublic String concat(String str); // 将当前字符串与str连接,返 回连接后的字符串。 Øpublic String to. Lowert. Case() 将当前字符串全转换为小写形式。 Øpublic String to. Upper. Case() ; 将当前字符串全转换为大写形式 Øpublic Char to. Char. Array() ; //将当前字符串转换为字符数组。 Øpublic Static String value. Of(type variable) ; //把variable转换为 字符串。 String s=“Hello!”; System. out. print(s. concat(“Word”)); } 81

5 String. Buffer类 字符串类 String. Buffer类的每个对象都是可以扩充和修改的 字符串常量 ◆ 创建字符串变量——String. Buffer对象 Øpublic String. Buffer(); // 5 String. Buffer类 字符串类 String. Buffer类的每个对象都是可以扩充和修改的 字符串常量 ◆ 创建字符串变量——String. Buffer对象 Øpublic String. Buffer(); // 创建一个空的String. Buffer对象 Øpublic String. Buffer(int lenth); // 创建长度为lenth的 String. Buffer对象 。 Øpublic String. Buffer(String str); // 用String对象初始化 String. Buffer Mystr 1=new String. Buffer(); String. Buffer Mystr 2=new String. Buffer(5); String. Buffer Mystr 3=new String. Buffer(“Hello!”); 82

5 String. Buffer类 字符串类 ◆ 字符串变量的扩充、修改与操作 Øpublic String. Buffer append(参数对象类型 参数对象名); //将指定 的参数对象转化成字符串,附加在原对象之后。 Øpublic 5 String. Buffer类 字符串类 ◆ 字符串变量的扩充、修改与操作 Øpublic String. Buffer append(参数对象类型 参数对象名); //将指定 的参数对象转化成字符串,附加在原对象之后。 Øpublic String. Buffer insert(int 插入位置,参数对象类型 参数对 象名); // 在指定位置插入字符串。 ØPublic void set. Char. At(int index, char ch); //替换指定位置的字符 String. Buffer Mystr 1=new String. Buffer(); Mystr 1=append(“Hello, Guys!”); System. out. println(Mystr 1. to. String()); Mystr 1=insert(6, 30); System. out. println(Mystr 1. to. String()); //输出Hello, 30 Guys! 83

5 String. Buffer类 字符串类 ◆ 字符串其它方法 Øpublic int length(); //返回缓冲区的字符数 Øpublic int capacity(); //返回缓冲区剩余空间 5 String. Buffer类 字符串类 ◆ 字符串其它方法 Øpublic int length(); //返回缓冲区的字符数 Øpublic int capacity(); //返回缓冲区剩余空间 Øpublic synchronized String to. String(); // 把String. Buffer转换 为字符串String. ◆ 字符串赋值与加法 String Mystr=“Hello, ”; Mystr=Mystr+”Guys!”; 84

小结与作业 本章围绕继承和重载两大特色,介绍了面向 对象程序设计的一些较深入的问题: 继承 、实现、包 域和方法的继承与隐藏 多态 思考题: P 92 4. 1、4. 2 作业: 小结与作业 本章围绕继承和重载两大特色,介绍了面向 对象程序设计的一些较深入的问题: 继承 、实现、包 域和方法的继承与隐藏 多态 思考题: P 92 4. 1、4. 2 作业: 4. 3 实验:例题与习题:项目单 5 85

-SL 275 The has a Relationship ◆ 变量和方法有4种访问级别: public , protected, private, default 类有public -SL 275 The has a Relationship ◆ 变量和方法有4种访问级别: public , protected, private, default 类有public 和default 两种访问级别。 如果没有显示的修饰符则变量、方法、类有缺省的访 问权限,允许同一个包中类的任何方法访问它们,称 为包内朋友 ◆ Protected 比缺省的更加放松,还允许处于不同包中 的子类的方法访问 86