为了更好地组织类,Java(其他编程语言也有)提供了包机制,用于区别类名的命名空间,意思就是说类名可以相同,但要用包名区分。
包(package),像文件夹一样,也采用了树形目录的存储方式。同一个包中的类名是不可以相同的,不同包中的类名是可以相同的。调用两个不同包中相同类名的类时,记得加上包名用于区别。也就是说,包可以起到避免名字冲突的作用。
19.1 创建包
几乎所有开发工具都支持通过右键新建包名package。一般操作步骤是右键src-【New】-【Package】,包名之间用.分割。可以一次性直接输入lao.chen这样的两成包名。包名成为类名的一部分,必须与相应的字节码所在的目录结构相吻合。
package lao.chen;
public class Boy {
public int age = 28;
public boolean marry = false;
public String getDesc() {
return "没人喜欢,不是这个世界的错,谁叫你长得不好看又穷。";
}
}
19.2 引用包类
在另一个类里,引用这个包里的类,用import关键字。如果用*号结尾,表示引入包里的所有类,虽然可以这样用,但不建议你这样,一次性引入好多类,但用到却没有几个,太浪费资源了,你要学会做到用什么类就引入什么类,像lao.chen.Boy这种。
/**
* 老陈说编程
* 包的讲解
*/
import lao.chen.Boy;
import java.util.*;
//类名:单身狗SingleDog
public class SingleDog {
public static void main(String[] args) {
//声明一个对象
Boy boy = new Boy();
//没结婚的原因
if (!boy.marry) {
System.out.println(boy.getDesc());
}
}
}
输出结果
没人喜欢,不是这个世界的错,谁叫你长得不好看又穷。
如果在一个包中,一个类想要使用本包中的另一个类,那么该包名可以省略,就是同一个包里的类之间的引用,可以不用import,直接用就好了。将SingleDog这个类移到和Boy同一个包下,就可以直接调用Boy这个类了。
package lao.chen;
/**
* 老陈说编程
* 包的讲解
*/
//类名:单身狗SingleDog
public class SingleDog {
public static void main(String[] args) {
//声明一个对象
Boy boy = new Boy();
//没结婚的原因
if (!boy.marry) {
System.out.println(boy.getDesc());
}
}
}
输出结果
没人喜欢,不是这个世界的错,谁叫你长得不好看又穷。
好了,有关Java包的内容就这么多了,如果你觉得老陈这样讲还可以的话,你就转发和点赞,你的轻轻一点,就是对老陈继续创作的最大鼓励和支持。
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注今日头条:老陈说编程。我在分享Python,前端、Java和App方面的干货。关注我,没错的。