前一篇:
【测开技能】Java系列(三十)静态方法和静态字段
这一篇,我们开始去分享包
正文
在前面的写中,都是用类命名的文件,但是呢,经常会遇到这样的问题,我们可以把所有的文件按照不同放在不同的文件夹。其实在我们写代码的时候,已经有用到。
可以看到在最上面就有一个package,这就是一个包的定义。
在包里定义一个类
代码语言:javascript复制package org.example;
public class Manta {
public String birst;
public static int price;
public String getBirst() {
return birst;
}
public void setBirst(String birst) {
this.birst = birst;
}
}
如何在在当前包使用呢
代码语言:javascript复制package org.example;
public class Test {
public static void main(String[] args) {
Manta manto=new Manta();
manto.getBirst();
}
}
可以直接用,如果是到其他包呢
代码语言:javascript复制package org.example.toos;
import org.example.Manta;
public class Main {
public static void main(String[] args) {
Manta ne=new Manta();
ne.getBirst();
}
}
可以感到,在同个包中,可以直接用,不同包 导入需要增加包名 类即可。
Java编译器最终编译出的.class文件只使用完整类名,因此,在代码中,当编译器遇到一个class名称时:
- 如果是完整类名,就直接根据完整类名查找这个class;
- 如果是简单类名,按下面的顺序依次查找:
- 查找当前package是否存在这个class;
- 查找import的包是否包含这个class;
- 查找java.lang包是否包含这个class。
如果按照上面的规则还无法确定类名,则编译报错。
为了避免名字冲突,我们需要确定唯一的包名。推荐的做法是使用倒置的域名来确保唯一性。
比如域名是www.baidu.com
可以起com.baidu.www 等来命名,当然了下面的子包可以用不同的功能来划分。
比如 com.baidu.www 下面有新的包
com.baidu.www.tools
当然了这是通用的写法。也可以根据自己的习惯填写。