一、打包的意义
Package——声明包
可以编写属于自己的java包,为了保证包名的唯一性,要求唯一的前缀,推荐使用互联网上的域名倒置作为唯一前缀
标准Java库是由一系列包组成,包括java.lang java.util等等
标准包就是层次型包结构,就如同硬盘上嵌套的子目录一样,我们可以使用嵌套层次结构来组织包
为了更好的规范代码,防止命名冲突和混乱,所以java出现了打包机制
当把类组织起来放进一个包内时,也就给包中的成员赋予了相互访问的权限,就拥有了该包内的程序代码
包访问权限把类聚集在一个包中这一做法提供了意义和理由
二、使用
一个类可以使用同一个包中的所有类
一个类可以使用其他包中的公开类
怎么使用公开类
1、在每个类前面加上完整包名,例如:
java.util.Scanner sc = new java.util.Scanner(System.in);
2、更简洁的方式:使用import语句来导包(快捷键ctrl+shift+o)
import java.util.Scanner; //文件顶部导包,快捷键ctrl+shift+o
Scanner sc = new Scanner(System.in);
3、可以import特定类,也可以导入整个包,通过在源代码文件顶部(import java.util.*)
import com.xiaowei.use.*;//文件顶部导包
Demo2 d = new Demo2();
三、代码演示
2个包,并且有同名类
//learn包demo1
package com.xiaowei.learn;
public class Demo1 {
public static void main(String[] args) {
Demo2 dm = new Demo2();//同一个包里的类,直接访问
dm.age =213;
dm.printfdata();
com.xiaowei.use.Demo2 d = new com.xiaowei.use.Demo2();//不同包,前面加包名访问
d.name = "xiaowei";
d.printda();
}
}
//learn包demo2
package com.xiaowei.learn;
public class Demo2 {
int age;
void printfdata(){
System.out.println("age="+age);
}
}
//use包demo2
package com.xiaowei.use;
public class Demo2 {
public String name; //public不同包也可以访问
public void printda(){
System.out.println("name="+name);
}
}
实际编程尽量不这样写(不同包有相同类名),不然只执行同包里的类(可以用,在每个类前面加上完整包名,来访问另一个包里的相同类)
//learn包demo1
package com.xiaowei.learn;
import com.xiaowei.use.*;
public class Demo1 {
public static void main(String[] args) {
Demo2 dm = new Demo2();
dm.name = "xw";
dm.printda();
//2个都是访问同包里的类,想访问不同包的只能
//com.xiaowei.use.Demo2 d = new com.xiaowei.use.Demo2();/
Demo2 d = new Demo2();
d.name = "xiaowei";
d.printda();
}
}
//learn包demo2
package com.xiaowei.learn;
public class Demo2 {
String name;
void printda(){
System.out.println("同包name="+name);
}
}
//use包demo2
package com.xiaowei.use;
public class Demo2 {
public String name;
public void printda(){
System.out.println("name="+name);
}
}
/*
同包name=xw
同包name=xiaowei
*/