包 修饰符
目前存在的问题:
1. 如果两个java文件的类名一致,那么后编译的class文件就会覆盖 前面编译的class文件。
包:java中的包相当于windows文件夹。
包的好处:
1. 解决类名重复class文件覆盖的问题。
2. 方便软件版本的发布。
包语句的格式:
package 包名;
目前存在的问题: 有了包语句之后,每次编译成功我们都需要新建一个文件夹,把对应的class文件拖进去。烦!!
解决方案: 只需要在编译的时候加上-d 参数即可。
格式:
javac -d 存放class文件的路径 java源文件
包要注意的事项:
1. 一个java文件如果有了包语句,那么该类文件的完整类名是"包名+ 类名":
2. 一个java文件只能有一个package语句。
3. package语句必须位于java文件中的第一个语句。
有了包之后类与类之间的访问:
问题:有了包之后,类与类之间的访问都必须加上包名!!烦!!!!
解决方案: sun引入导包语句解决该类文件。
导包语句的作用是简化书写。
导包语句的格式:
import 包名.类名;
导包语句要注意的细节:
1. 一个java文件可以出现多个import语句。
2. 导包的时候可以使用通配符"*"来匹配类名。"*"可以匹配任何的类名。
3. import bb.*; 该语句不会作用于bb包下面的子包。
推荐使用: 不要使用通配符导包,因为结构不清晰。
jvm加载class文件是属于懒惰型加载,只有使用到了该类文件的时候才会 被加载。
什么时候需要使用导包语句??
类与类之间的访问,如果这两个类不属于同一个包,那么则需要使用到导包语句。
java.lang包的类jvm会自动导入,不需要我们自己导入java.lang包的类。
访问权限修饰符:访问权限修饰符就是用于控制修饰的类、变量、方法的可见范围。
public protected default private (从大到小排序)
同一个类 true true true true
同一个包 true true true false
子父类 true true false false
不同包 true false false false
注意: 在不同包中类与类之间可以访问的权限修饰符只有public 与protected才可以相互访问 ,
但是protected必须要在继承关系下才能使用。
打jar包:
如何将class文件打包成jar文件呢?
需要使用 到jdk的开发工具jar.exe
jar工具的使用格式:
jar cvf jar包名 class文件名|包名
jar要注意的事项:
1. 打jar包 的时候必须要指定jar包的入口类,入口类的指定是在清单文件上去指定的,
格式: Main-Class: 包名.类名
2. jar双击运行仅对于图形化界面程序起作用,对于控制台 程序不起作用。
3. 如果使用jar包中的类文件,一定要先设置好classpath路径。
jar的作用:
1. 可以将一个项目的class文件打包,方便用户运行项目
2. 可以将工具类打包给jar提供给其他人去使用。