实验7 成员访问控制与异常 - 图文

更新时间:2023-09-25 08:29:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

山西大学计算机与信息技术学院

实姓 名 学 号 验 报告 专业班级 实验日期 批改日期 课程名称 Java实验 成 绩 实验名称 一、实验目的 (l) 理解 Java 包的组织结构 ; (2) 学会编写带有包结构的程序 ; (3) 掌握包结构下的成员访问控制。 (4) 掌握基本异常的处理机制 ; (5) 熟悉 try 语句与 catch 语句的搭配使用 ; (6) 了解有异常处理与没有异常处理的差别 ; (7) 多重 catch 语句的使用 ; (8) 使用 Throws 声明异常和 Throw 抛出异常。 二、实验要求 指导教师 实验 7 成员访问控制与异常 编写 3 个类 , 类名分别为 Clock、A、B, 其中类 Clock 和类 A 放在同一个包 packone 中 , 而类 B 则放在另一个包 packtwo 中 , 包 packone 和包 packtwo 放在同一个目录下。类 Clock 中有 3 个整型数据 hour、minute、second, 它们分别是 public、private、protected, 类 Clock 还包含一些方法使用这些数据。类 A 和类 B 的功能相似 , 都是使用类 Clock 并调用类 C1ock 中的方法。请按照下面的实验步骤 , 循序渐进的完成实验 , 并回答后面的问题。 三、包的使用以及访问控制 (1) 首先在 c:\\programming 目录下创建一个文件夹 , 命名为 packone, 然后在该文件夹下创建一个名叫 Clock.java 的程序 , 打开文本编辑器按程序清单输入该程序。 程序清单Clock.java package packone; public class Clock { } void setAll(int i, int j, int k) { hour = i; setAll(i, j, k); public int hour; private int minute; protected int second; public Clock(int i, int j, int k) {

} } minute = j; second = k; public int getHour() { } public int getMinute() { } public int getSecond() { } return second; return minute; return hour; (2) 接着在 packone 文件夹下创建第二个程序命名为 A.java, 打开文本编辑器按程序清单输入该程序。 程序清单A.java package packone; public class A { public static void main(String[] args) { Clock c = new Clock(5,20,10); System.out.println(\从类A中访问Clock hour = \ System.out.println(\从类A中访问Clock minute = \ System.out.println(\从类A中访问Clock second = \ } } (3) 现在在 c:\\programming 目录下创建第二个文件夹 , 命名为 packtwo, 然后在该文件夹下创建一个名为 B.java 的程序 , 打开文本编辑器按如下程序清单输入该程序。 程序清单B.java package packtwo; import packone.*; class B { public static void main(String[] args) { Clock c = new Clock(8,30,5); System.out.println(\从类B中访问Clock hour=\ System.out.println(\从类B中访问Clock minute=\ System.out.println(\从类B中访问Clock second=\ } }

至此已经编辑好了 3 个源程序 , 然后在Eclipse 环境中分别编译运行packone 文件夹和 packtwo 文件夹中的程序,编译的结果将分别在 packone 文件夹和 packtwo 文件夹中生成 Clock.class,A.class 和 B.class 文件。接着分别运行这两个程序 , 观察程序输出结果并分析之。运行结果和分析写在下面。 运行结果: 图一 图二 答:使用private修饰符可以完全隐藏类的成员,在类外不能直接访问它们;使用protected修饰符的类成员,允许任何包中的子类或同一包中的类访问它们;使用public修饰符的类成员,允许任意类访问它们。 思考 (1) 现在请将 Clock 类的构造函数 public Clock(int i,int j,int k) 改成 Clock(int i,int j,int k) 然后分别运行 A.class 和 B.class, 观察所得结果。

图三 图四 答:使用默认修饰符的类不能被其他包中的类访问。 (2) 由于在 B.Java 程序中使用了 import packone.* 语句从而导入了 packone 包中的Clock 类 , 但是 import packone.* 这种写法仅仅导入指定包中的 public 类 , 如果现在将 Clock 类的声明 public class Clock 改成 class Clock, 测试一下程序运行会报错吗 ? 答:会报错,如图四。 (3) 用 import 语句可以导入所需的类 , 如果不想使用 import语句, 那么在使用包中的类时就必须带上完整的包路径。现在请把 B.java 程序做如下的修改 : package packtwo; class B { public static void main(String[] args) { packone.Clock c = new packone.Clock(8,30,5); System.out.println(\从类B中访问Clock hour = \

System.out.println(\从类B中访问Clock minute = \ System.out.println(\从类B中访问Clock second = \ } } 然后编译运行 , 观察结果是否正确。 图五 (4) 在 A.java 和 B.java 程序中分别通过 getHour()、 getMinute() 和 getSecond() 访问了 Clock 类的数据成员 , 请问能否不通过这几个方法而直接访问 Clock 类的数据成员呢 ? 现在请把 A.Java 程序的相关部分作如下修改来进行测试 , 编译运行观察结果。 System.out.println(\从类 A 中访问 Clock hour=\System.out.println(\从类 A 中访问 Clock minute=\System.out.println(\从类 A 中访问 Clock second= + c.second); 答:如图六知,类Clock成员hour不可被同一包内的其他类直接访问。 图六

本文来源:https://www.bwwdw.com/article/rpkd.html

Top