Java包和导入

1、包定义及包名注意事项

        在Java中,使用package来解决class命名冲突。

        Java定义了一种命名空间,称之为包(package),一个类总是属于某个包,类名只是一个简写,真正的完整类名是"包名.类名"

        在定义class的时候,需要在第一行声明这个class属于哪个包,如:

package OOP;  // 申明包名为OOP

public class Person {
    ... ... 
}

   (1)在Java虚拟机执行的时候,JVM只看完整类名,因此,只要包名不同,类就不同。

   (2)包可以是多层结构,用"."点隔开,如:Java.utl。

   (3)包没有父子关系,如:java.util和java.util.zip是不同的包,两者没有任何继承关系。

   (4)没有定义包名的class,它使用的是默认包,非常容易引起名字冲突,因此,不推荐不写报名的做法。

  (5)包名推荐使用倒置的域名,如:org.apache。

2、包作用域

        位于同一个包的类,可以访问包作用域的字段和方法。

        不用public、protected、private修饰的字段和方法就是包的作用域。

        Person类和Main类都是hello包中不同文件,在Main类中调用Person类型方法,如:

// Person类
package hello;

public class Person {
    // 包作用域:
    void hello() {
        System.out.println("Hello!");
    }
}

//Main类
package hello;

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        p.hello(); // 可以调用,因为Main和Person在同一个包
    }
}

3、import导入

        在一个class中,总会引用其它的class。

 (1)第一种,在使用时直接写出完整类名。

mr.jun.Arrays arrays = new mr.jun.Arrays;

 (2)第二种,用import语句,导入完整类名,然后写简单类名。

// 导入完整类名
import mr.jun.Arrays;  
Arrays arrays = new Arrays();

        在写import的时候,可以使用*,表示把这个包下面的所有class都导入进来,但不包含子包的class。不推荐这种写法,因为在导入了多个包后,很难看出Arrays类属于哪个包。

// 使用*表示导入该包中所有类,但不包含子包的类
import mr.jun.*;  
Arrays arrays = new Arrays();

 (3)第三种,"import static"的语法,它可以导入一个类的静态字段和静态方法,但很少使用。

      

// 导入System类的所有静态字段和静态方法
import static java.lang.System.*;
// 相当于System.out.println()
out.println("Hello world");

          Java编译器最终编译出的".class"文件只使用完整类名。

        如果有两个class名称相同,如:mr.jun.Arrarys和java.util.Arrays,那么只能import其中一个,另一个必须写完整类名。

4、JAVA调用其它包中的类

        例如:class包中包含一个animal.java,和class包同级目录下有一个test.java文件想引用class包中animal.java的animal类。

        解决方法:使用import导入包中的类,格式为:import 包A.类1;

# 目录结构如下:
class
    - animal.java
test.java
# test.java导入animal类
import class.animal

# 也可以直接“import 包名.*”,这样会把该路径下的所有类都导入

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值