77范文网 - 专业文章范例文档资料分享平台

实验五(2)

来源:网络收集 时间:2019-02-15 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

{ classA objA=new classA(); classB objB=new classB(); objA.aaa(); objB.bbb(); } }

运行主类,观察运行结果。 运行结果:

classA的输出100 classB的输出200

如上两个实验表明封装在同包里的类,只要成员不是私有的,相互之间透明,相当在一个java文件中一样使用。默认访问控制符具有包访问性,即同包内可以互相访问 第三步:按【思考问题】提示理解打包的应用过程:

【思考问题】

①将主类文件Ex5_2.java封装在另一个包mypackage2,再进行编译,看编译结果提示什么错误?(提示:两者不在同包,classA和classB不能被识别)。

答:Exception in thread \无法解析的编译问题:

classA 无法解析为类型 classA 无法解析为类型 classB 无法解析为类型 classB 无法解析为类型

at mypackage2.Ex5_2.main(Ex5_2.java:8)

原因:不同胞内除了public之外不能使用

②上条件不变,在主类class Ex5_2加进import mypackage1.*语句,再编译,看是什么编译错误?(提示:载入了mypackag1包,可以识别这两个class,但这两个类不是public,不能被不同包使用)

答:Exception in thread \无法解析的编译问题:

类型 classA 不可视 类型 classA 不可视 类型 classB 不可视 类型 classB 不可视 类型 classA 不可视 类型 classB 不可视

at mypackage2.Ex5_2.main(Ex5_2.java:8)

③将类classA和classB修饰为public再编译,看发生了什么?为什么?(提示:一个java文件中只能有一个public类且类名与文件名相同,因此每个public类用一个单独的java文件,且文件名与类名相同) 答:一个java文件中只能有一个public类且类名与文件名相同,因此每个public类用一个单独的java文件,且文件名与类名相同

④上面通过编译后,再看Ex5_2还存在什么错误?(提示:classA和classB中的方法修饰符是默认的,另一个包中的代码允许访问吗?)

答:Exception in thread \无法解析的编译问题:

6

类型 classA 中的方法 aaa()不可视 类型 classB 中的方法 bbb()不可视

at mypackage2.Ex5_2.main(Ex5_2.java:10)

不允许

⑤将方法aaa()和bbb()修饰为public,重新编译,所有错误是否消失?无错误后可运行主类,观察运行结果。

独的java文件,且文件名与类名相同)

答:Exception in thread \无法解析的编译问题:

类型 classA 不可视 类型 classA 不可视 类型 classB 不可视 类型 classB 不可视 类型 classA 不可视 类型 classB 不可视

at mypackage2.Ex5_2.main(Ex5_2.java:8)

第四步:在不同工程下应用jar压缩包。按【思考问题】步骤理解软件重用和jar压缩包的使用。

①新建一个工程project2,将原主类文件Ex5_2原样加入该工程中。(提示,

importmypack1.*;不能被识别错误,当前工程没有找到包mypack1所在的classpath)

②在Eclipse工具下,由Project—properties—java Build Path—Libraries进入如下界面:

7

该界面可加入第三方类包。这里已有一个默认类包就是JDK,当前工程使用任何第三方包都可通过此界面加入。这里有个选项“Add Class Folder”可加入类文件目录。首先按此选项加入,可浏览到这两个类的包目录D:\\eclipse312\\myfile\\Test_pack\\mypack1“确定”,importmypack1.*;语句错误消

失,但整个文件错误仍然存在,说明直接加入包路径的方法不行。正确的选择应该 是“Add External JARs”,但mypack1还未压缩成jar文件。

③将类包压缩成jar文件。JDK提供了压缩命令,见附录1。在Eclipse下可由导出Export向导完成。“file”—“Export”进入如下界面:

选择JAR file—Next进入下界面:

在该界面可以浏览到被压缩的包mypack1,在JAR file文本栏中指定被压缩的jar文件名和路径。可通过“Browse”浏览到指定路径。按“Finish”可在该目录下得到压缩的jar文件。

8

④重新进入Project—properties—java Build Path—Libraries—Add External JARs:浏览到mypack1.jar所在目录,加入自定义的类包OK。 ⑤观察一切错误是否消失?观察运行结果。

第五步:其他人应用这个包。

任何想使用该包中的类的人,可将压缩的mypack1.jar拷贝到你的计算机中,然后按当前工程加载类包的方法即可使用该包。 第六步:验证protected修饰符

①将classA中的aaa()方法修饰为protected,观察Ex5_2.java文件有何错误? ②主类如何修改方能正确实用classA? 这里给出一段参考程序,请说明其原因:

package mypackage2; import mypack1.*;

publicclass Ex5_2 extends ClassA { publicstaticvoid main(String args[]) { //ClassA objA=new ClassA(); ClassB objB=new ClassB();

9

Ex5_2 objA=new Ex5_2(); objA.aaa(); objB.bbb(); } }

在JCreator2.5中如何处理参见附录1。

3.Java的异常处理

源文件是3.Java的异常处理

源文件是Ex5_3.java。要捕捉的异常是除数为零和数组下标越界。通过修改a和c[]下标值体验程序。

public class Ex5_3

{ public static void main (String args[]) {int a, b;

int c[]={1,2,3}; try{a=10; b=100/a;

System.out.println (\当前a值:\ c[2]=200;

System.out.println (\当前数组长:\ }catch(ArithmeticException e)

{ System.out.println (\除零错误:\}

catch(ArrayIndexOutOfBoundsException e)

{ System.out.println (\数组下标越界:\ finally

{ System.out.println (\我是finally\ System.out.println (\我能被正常执行到\ } }

【思考问题】

① 先运行上面没有错误程序,观察运行结果。

运行结果:

当前a值:10 当前数组长:3 我是finally 我能被正常执行到

② 按下条件分别修改数据,编译后运行,观察输出结果,分析在try?catch块里那

些语句没有被执行,为什么? 块外那些语句可被执行到,为什么? ? 修改a=0, 保持c[2]=200;

答:System.out.println (\当前a值:\+a);

c[2]=200;

System.out.println (\当前数组长:\+c.length);没有被执行· 因为当执行到 b=100/a;时就发生了“除数为0的错误“,执行

10

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库实验五(2)在线全文阅读。

实验五(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/471222.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: