zoukankan      html  css  js  c++  java
  • 认识包信息

    包的生成和引入

    包的定义: package 包名称.子包名称;

    生成class字节码文件时需要严格按照包的路径来生成相关文件夹:javac -d . Demo.java , .表示在当前路径下生成文件夹。

    类的导入:import 包名称.子包名称.类名称;  //手工导入所需要的类   (或  import 包名称.子包名称.*;   //由JVM自动加载所需的类)

    静态导入:如果一个类中的方法全部是使用static声明的静态方法,则在导入时就可以直接使用 import static 包.类.*; 的方式进行导入,这样就可以直接使用其静态方法,而不需要使用“类.方法()”的形式调用。

    jar命令的使用:

    jar -cvf my.jar 包名称  // 这样会把前面class文件所在的包(文件夹)打包成一个jar格式的压缩文件。c(create), V(详细的输出信息), F(指定存档的文件名)

    查看jar中的全部内容:jar -tvf my.jar  // t(列出存档内容的列表)

    如需解压缩jar包,可输入:jar -xf my.jar  // x(展开存档中的文件)

    用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-points ...
    选项包括:
    -c 创建新的归档文件
    -t 列出归档目录
    -x 从档案中提取指定的 (或所有) 文件
    -u 更新现有的归档文件
    -v 在标准输出中生成详细输出
    -f 指定归档文件名
    -m 包含指定清单文件中的清单信息
    -e 为捆绑到可执行 jar 文件的独立应用程序指定应用程序入口点
    -0 仅存储; 不使用情况任何 ZIP 压缩
    -M 不创建条目的清单文件
    -i 为指定的 jar 文件生成索引信息
    -C 更改为指定的目录并包含其中的文件
    如果有任何目录文件, 则对其进行递归处理。清单文件名, 归档文件名和入口点名称的指定顺序与 'm', 'f' 和 'e' 标记的指定顺序相同。

    示例 1: 将两个类文件归档到一个名为 classes.jar 的归档文件中: jar cvf classes.jar Foo.class Bar.class
    示例 2: 使用现有的清单文件 'mymanifest' 并将 foo/ 目录中的所有文件归档到 'classes.jar' 中: jar cvfm classes.jar mymanifest -C foo/ .

    另外,由于严格的路径约束,在java文件中引入依赖的jar包时,需要指定字节码文件路径。如SET CLASSPATH=.;f: estmy.jar ,.;代表在当前路径查找,这里设置了两个classpath目录。

    (注:如若在执行javac命令时报错“需要class,interface或enum”,此乃编辑工具带来的字符编码问题,用记事本编辑拷贝,首字母手动重新输入即可解决。)

    包的访问权限

    范    围   private      default     protected      public    
    同一类         
    同一包中的类            
    不同包的子类           
    其他包中的类          

    注意,private比较独特,不同包的子类的含义是,在包PB的类B中引入包PA,并使得B extends A,这样如果A声明为protected权限,那么类B也是可以通过继承类A来使用A中方法的。假使类B不继承类A,除非类A被声明为public权限,否则在类B中无法直接对声明为protected的类A进行实例化,这也就是表格中的“其他包中的类”这种情形。此外,表格中绿色代表拥有相应的访问权限,红色代表不拥有相应的访问权限。

    注意:一个java文件中可以有(定义)多个并行层级关系的class,但是只能有一个public修饰符的calss。试想,如果有多个class声明为public权限,那么包也就很难发挥出其本质的能力——命名空间。这种方式,势必将导致不同包的class发生命名冲突,如果一个java文件内只定义一个public class,那么文件名和public class绑定,即便不同包内有相同名称的public class,也无妨,编译器不会报错。因此,除了public class以外的class在定义时,一般会采用default的权限,这样最为稳妥,也是惯例,这样很好的起到了防止命名冲突的效用。

  • 相关阅读:
    大数加法、乘法实现的简单版本
    hdu 4027 Can you answer these queries?
    zoj 1610 Count the Colors
    2018 徐州赛区网赛 G. Trace
    1495 中国好区间 尺取法
    LA 3938 动态最大连续区间 线段树
    51nod 1275 连续子段的差异
    caioj 1172 poj 2823 单调队列过渡题
    数据结构和算法题
    一个通用分页类
  • 原文地址:https://www.cnblogs.com/ioveNature/p/6796827.html
Copyright © 2011-2022 走看看