以下讲解的内容,概念清除即可,实际上现在使用的IDE开发工具,很多操作不需要我们手动去完成了。
任何操作系统中,都有一个统一的共识:同一个目录下不能存在相同的文件名称,但是,实际开发中又很难避免命名冲突矛盾的问题,为此,项目中往往会引入包的概念,所谓的包,存储时就是一个文件夹,在不同目录中可以存放相同的文件。
要想在Java中定义包,直接使用package关键字即可。
【举例】:定义包
package com.example.myapplication;
一旦程序中声明了包,就必须将生成的*.class文件保存在包里面,这个包并不是手工创建的,Java中专门提供了打包编译的操作:
如 javac -d . Hello.java
命令中的参数:
此时若程序有包了,解释程序是必须加上包名称,eg: java 包名称.Hello
Java项目开发中,程序类必须要有包的定义才可以使用,没有包的类不存在,类的完整名称就是”包.类“。
利用程序包可以将很多的*.class类归类保存,这样一来,可能存在包与包间进行类的互相调用问题,可以利用import语句解决。
【举例】:定义一个com.example.myapplication.util.Message类
package com.example.myapplication.util;
class Message {
public void getInfo(){
System.out.println("hello");
}
}
【举例】:定义一个com.example.myapplication.test.TestMessage类
package com.example.myapplication.test;
import com.example.myapplication.util.Message;
public class TestMessage {
public void printInfo(){
Message msg = new Message();
msg.getInfo();
}
}
此时编译,出现如下错误: Message在com.example.myapplication.util中不是公共的; 无法从外部程序包中对其进行访问. 出错的原因是,Message类的定义中使用的是默认的访问控制权限,其特点是只能被同一包中的类所访问,不能被外包所访问,所以,学习包的定义后,对于代码有一些规范化要求:后续写的类都要求写在包中,且*.java文件中智只会有一个public class声明。
【小结】:
【举例】:修改Message类的定义
package com.example.myapplication.util;
publi class Message {
public void getInfo(){
System.out.println("hello");
}
}
Java开发类库非常庞大,开发中也很多,比较常见的开发包如下:
1)以后的程序都要写上package打包;
2)import语句往往不需要编写,前提是:使用开发工具;