zoukankan      html  css  js  c++  java
  • java基础-包

    浏览以下内容前,请点击并阅读 声明

    为了使类型更容易查找和使用,避免命名冲突,以及可视范围的控制,程序员一般将相关的一些类型组合到一个包中。组合的类型包括类,接口,枚举和注释,枚举是一种特殊的类,而注释是一种特殊接口,所以说我们一般的类型包括接口和类。

      java平台根据功能将一系列的类型按照功能组合成不同的包,例如基础类包含在java.lang中,而一些读写相关的类则在java.io中等等。

    1 包的创建

      创建一个包,首先要给一个包命名,然后在包中每一个类型的源代码文件的首行添加包的声明语句,注意声明语句只能有一条:

    package packname;

     一个源代码文件中可以定义多个类型,但是只能有一个类型定义为public,而且该源代码文件的名称必须与public类型的名称一致。当然一个源代码文件中可以有定义为非public的类型(强烈建议不要这样做),该类型是包外不可见的。

       一个类型如果没有包的声明语句,那么该类型位于一个未命名的包中,未命名的包一般只用于一个临时的程序或者是开发的初期。

    2 包的命名 

      不同的包中可以包含相同名称的类型。

      一般情况下,包的名称都是小写的字母以区别于类和接口的名称 。公司会用他们保留的的网络域名来作为一个包的开始,例如域名为example.com的公司的员工将一个程序包命名为com.example.mypackage

      java语言内部的包一般以java.或者javax.开头。

      有时公司的互联网域名会包含无效的字符,如短横杠-或者其他特殊字符,以数字开头,包含java的保留关键词等等,一般建议将其替换或者添加成下划线:

    域名包名称前缀
    hyphenated-name.example.org org.example.hyphenated_name
    example.int int_.example
    123name.example.com com.example._123name

    3 包成员的使用

        一个包内所含的类型又叫包成员。

      要使用一个包内的包成员(public),只需按照以下完成一步:

    • 通过全名引用成员
    • 用import语句导入一个成员
    • 用import语句导入整个包

    3.1 通过全名使用包成员

      对于一个不经常使用的类型,我们可以使用其全名来引用该类型,而无需使用import语句,如下所示:

    //声明一个包名称为packagename类型名称为Type的类型的变量
    packagename.Type var;

    3.2 导入一个成员

     import语句可以导入一个包中的指定成员,import语句位于package语句之后,在类声明之前。

    //注意,import语句是在import之后跟上类型的全名,以分号结尾
    import packagename.Type ;

     使用import语句导入一个成员之后,在该源代码文件中就可以直接使用类型名称引用该类型了。

    3.3 导入整个包

     import语句还可以导入整个包,即整个包的成员,语法为在import关键词后跟上包的名称然后紧跟一个星号通配符*,如下所示:

    //导入整个包
    import packagename.* ;

     注意,通配符*只能匹配包中的所有类型的名称,而不能匹配部分类型名称,一下import语句会编译出错:

    //一下语句本意是匹配graphics包中所有以A开头的类型,但不能这样使用
    //编译出错
    import graphics.A*;

      另外还有一种比较少用的import语句用法,可以导入一个类的嵌套类:

    //以下语句会导入Rectangle类中的所有子类,但是不会导入Rectangle类本身
    import graphics.Rectangle.*;

     导入整个包之后,包中所有的类型都可以用类型名称来引用了。

      为方便起见,java编译器会为每个源代码文件自动整个导入两个包:(1)java.lang和(2)当前类型所属的包

     3.4 包分级

      由包的名称看上去似乎是分等级的,例如java.awt,java.awt.color和java.awt.font包,后两者包名称以前者名称开头,然而java.awt并不包含java.awt.color和java.awt.font包以及类似于java.awt.xxxx格式的包,以下导入语句:

    import java.awt.*;

    并不会导入除java.awt包内的所有类以外的其他任何类型。

     3.5 名称冲突

      当含有相同类型名称的两个包被同时整个导入时,则必须使用类型的全名来引用导入的类型。

    3.6 静态导入语句

      当经常要用到某一个静态的类成员时,可以使用静态导入语句,这样,使用静态导入的静态类成员就可以直接使用其名称进行引用了,如

    //一下语句导入Math.PI以后,便可使用PI直接引用该静态字段
    import static java.lang.Math.PI;
    //以下语句导入Math中所有的静态字段
    import static java.lang.Math.*;

     注意:静态导入语句虽然带来便利,但静态导入语句会使代码维护成本加大,因为导入的静态字段直接使用很难判断该字段来自哪里,只有恰当的使用才能带来最大的简洁性和易读性。

    4 源代码文件和类文件的管理

      许多java平台是依靠分级的文件系统管理源代码文件和类文件的。

     java的源代码文件以后缀.java结尾,而编译源代码文件后产生以.class为后缀的文件,源代码文件和类文件在文件系统中的位置和所处包的名称的关系为:

      如果包的名称为com.example,则其类型的源代码文件和类文件应该处于 com/example/目录下。

  • 相关阅读:
    屠蛟之路_重伤的屠蛟俊_ThirdDay
    屠蛟之路_重登数据库大山_SecondDay
    屠蛟之路_你的名字_FirstDay
    Beta版本冲刺计划及安排
    软件工程作业1203
    导师互选系统 Alpha版冲刺总结
    屠龙之路_项目测试
    【Alpha】十天屠龙记
    屠龙之路_冲刺总结随笔
    My97日历控件常用功能记录
  • 原文地址:https://www.cnblogs.com/justforcon/p/6070393.html
Copyright © 2011-2022 走看看