我的“hello world!”按照教科书里代码 Beispiel.java 如下:
1)package de.jse6buch.kap02
2)public class Beispiel
....
教科书里解释,第一行指出:Beispiel.java(根据以知类名Beispiel)文件在目录..\de\jse6buch\kap02下。
当前目录..\de\jse6buch\kap02 运行javac.exe :javac Beispiel.java 回车
(如正常 在..\de\jse6buch\kap02下生成 Beispiel.class文件)
再运行java.exe: java Beispiel (如书中介绍,不能加后缀.class)
执行报错:Exception in theread "main " java.lang.NoClassDefFoundError:Beispiel(wrong name:
....
但如果 键入 java de.jse6buch.kap02.Beispiel
就运行正常。
请前辈能人解释下为什么要使用package
是不是用package是 都要需要在执行 键入package 指示的路径(象问题中的de.jse6buch.kap02)
------解决方案--------------------
使用package的目的在于使代码根据不同的功能分成不同的组,不同包下的访问权限是不一样的,受访问修饰符(像public private protected等)的限制。
比如,默认的访问修饰符(就是前面不加访问修饰符)只能访问同一个包下的类,如果是在不同的包下,那就没有访问权限。所以,包和访问控制符一起能够增加部分安全性。
------解决方案--------------------
package解决的问题主要有两个:
1.解决了类的命名冲突的问题,在不同的包中的类的类名可以相同
2.解决在大的工程中类的数量过大不好管理的问题,可以按照模块或业务类型将类封装到不同的包中
张孝祥的 < <java就业培训教程> > 中关于包的讲解不错,能借到的话建议看一看那部分内容