当前位置:首页 > 实验五-
System.out.println(\的输出\ } }
class classB {int b; void bbb() {b=200;
System.out.println(\的输出\ } }
----------------------Ex5_2.java源代码-------------------------- public class Ex5_2
{ public static void main(String args[]) { classA objA=new classA(); classB objB=new classB(); objA.aaa(); objB.bbb(); } }
运行Ex5_2,观察运行结果。 运行结果:
classA的输出100 classB的输出200
第二步:采用包,两个java文件用同一个包,即编译后的三个class文件放在同一个mypackage1包中。
----------------------mypack.java源代码----------------------------
package mypackage1; class classA { int a; void aaa() {a=100;
System.out.println(\的输出\ } }
class classB {int b; void bbb() {b=200;
System.out.println(\的输出\ } }
----------------------Ex5_2.java源代码-------------------------- package mypackage1; public class Ex5_2
{ public static void main(String args[])
5
{ 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
共分享92篇相关文档