【测开技能】Java系列(三十一)包

2022-12-29 19:39:09 浏览数 (1)

前一篇:

【测开技能】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

当然了这是通用的写法。也可以根据自己的习惯填写。

0 人点赞