java 中的包概念

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 中的包概念相关的知识,希望对你有一定的参考价值。

  Java 中的包package, 就相当于电脑中的文件夹。我们平时在工作中,文件太多时,都会新建文件夹进行分类管理,java 中的包也是类似的道理,当我们的类太多时,也需要进行管理。这时我们就会把类文件放到包中,就是把这个.class文件放到了一个文件夹中,这样可以对类文件进行分类管理,同时也有效地避免了命名冲突。

  当我们对java源文件进行编译时,它会生成一个.class 文件,如果我们在java源文件的顶部,指定一个包名(package net;),编译时,这个包名会生成一个文件夹,在这里就是net文件夹,编译好的.class文件则会放到该文件夹下。

package net;   // 指定包名net

public class Test {
    public static void main(String[] args) {
        System.out.println("hello");
    }
}

  当包名很长时,如package net.com.cn,这时它就会生成多级文件夹,先生成net文件夹,然后在net文件夹中生成com文件夹,最后在com文件夹中生成cn文件夹,我们编译生成的.class 文件就会放到cn 文件夹中。我们写一个Animal 类,指定包名为net.com.cn

package net.com.cn;

public class Animal {

    private String name;
    private int age;
    
    public Animal( String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

  编译之后,你会发现我们当前文夹中多了一个net文件夹,打开net文件夹,发现com文件夹,再找开com文件夹,发现cn 文件夹,在cn文件里面才有我们的Animal.class 类文件。 如果有了包之后,这个类实际上叫做net.com.cn.Animal, 这个Animal类有了所属,如果在java源文件中使有这个类创建对象,就要使用

net.com.cn.Animal cat = new net.com.cn.Animal();

   这时我们使用类创建对象就非常麻烦了,所以出现了import导包。 把要使用的类直接导进来,我们在源代码中就直接可以使用类名进行输写。 我们写一个test.java文件

import net.com.cn.Animal;  // 引入包

public class Test {
    public static void main(String[] args) {
        Animal cat = new Animal();  // 直接使用类名进行书写
        cat.setName("miaomiao");
        System.out.println(cat.getName());
    }
    
}

  当引入包之后,就是一个类文件有了所属之后,这又带来权限问题。如果包中的class类文件能够被访问,它必须是public的,包中的方法,如果能够被访问,它也必须是public.  包与包之间的类进行访问,被访问的包中的类必须是public权限的,被访问的包中的类的方法也必须是public 权限的。

  最后还有一个jar包,它就是一个压缩文件,当我们编译之后,类文件都放到了文件夹中,这时 我们再对文件夹进行压缩,就形成了jar包, 就像我们在文件夹上面,点击右键,生成winrar文件 一样。因为压缩文件体积小,有利于进行传播。第三方包,就是通过 jar进行发布,我们直接导入jar包,就可以对里面的类文件进行使用。

以上是关于java 中的包概念的主要内容,如果未能解决你的问题,请参考以下文章

Java中的模块(Module)入门介绍

LockSupport.java 中的 FIFO 互斥代码片段

Go语言中的包你知道吗

Go语言中的包你知道吗

Go语言中的包你知道吗

Kotlin函数 ⑨ ( Kotlin 语言中的闭包概念 | Java 语言中函数作为参数的替代方案 )