【包及访问控制权限】_包的定义及导入笔记

来源:互联网 发布:c语言书籍 知乎 编辑:程序博客网 时间:2024/05/21 09:21
本章目标:
了解多人开发的问题
掌握包的作用及定义
掌握包的导入语法及导入限制
了解系统常用包
掌握Java新特性——静态导入
掌握jar命令的使用


大型程序开发

如果有多个开发人员开发同一个项目的时候,则肯定会出现类名称相同的情况。那么这样一来就会比较麻烦。
相同的文件会出现覆盖的情况。

包的定义:

package 包名称.子包名称;

package org.lxh.demo08;        //定义一个包class Demo{    public String getInfo(){        return "Hello World!!!";            }}public class PackageDemo01{    System.out.println(new Demo().getInfo());}


定义包之后,实际上类名称就是:包.类名称。

为程序打包编译:

javac -d . PackageDemo01.java
此时,生成完*.class之后,就可以直接访问了。

java org.lxh.demo08.PackageDemo01

直接打包编译多个java文件
javac -d . *.java

3.3包的导入

类一个包的class 文件需要使用另一个包的class 文件的时候就需要使用导入指令。\

import语句

语法:
import 包名称.子包名称.类名称;        ->手工导入所需要的类
import 包名称.子包名称.*;        ->由JVM自动加载所需要的类

Demo.java
public org.lxh.demo08.a;public class Demo{    public String getInfo(){        return "Hello World!!!";        }}



package    org.lxh.demo08.b;    //放在不同的包中import    org.lxh.demo08.a.Demo;    //导入不同中的Demo类public class ImportDemo01{    public static void main(String args[]){        System.out.println(new Demo().getInfo());        }}


编译的时候,应该先编译Demo.java类,之后再编译ImportDemo01.java,因为后者使用了前者的类进行操作。

关于public class 与 class 声明类的完整补充

如果一个类声明为public class 则文件名称必须与类名一致,而且在一个类中只能有一个public class ,而如果使用class声明一个类,则文件名称可以与类名称不一致,但是执行的时候必须执行生成的class文件名称。除了这些之外,public class和class还在包的访问上有所限制,如果一个类只在本包中访问,不需要被外包访问,则直接声明成class 即可,而如果一个类需要被外包访问,则必须声明为public class.

如果现在假设要导入一个包中的很多类,这样写肯定很麻烦。可以直接使用"*"的方式进行导入。

import org.lxh.demo08.a.Demo;
import org.lxh.demo08.a.*;
两者的性能都一样。


问题:当同时导入两个相同类名称的包时怎么处理?
package org.lxh.demo08.d;import    org.lxh.demo08.a.*;import    org.lxh.demo08.c.*;public class ImportDemo02{    public static void main(String args[]){        org.lxh.demo08.a.Demo d = new org.lxh.demo08.a.Demo();        System.out.println(d.getInfo());    }}



3.4系统常见包    
No    包名称            作用
1    java.lang        此包为基本的包,像String这样的类就保存在此包之中。
2    java.lang.reflect    此包为反射机制的包,java.lang的子包,在Java常用类库中会为读者介绍
3    java.util        此包为工具包,一些常用的类库、日期操作等等都在此类之中,如果把此包掌握精通各种设计思路都好清晰
4    java.text        提供文本处理类
5    java.sql        数据库操作类,提供了各种数据库操作的类和接口
6    java.net        完成网络编程
7    java.io            输入输出处理
8    java.awt        包含了构成抽象窗口的工具集(abstract window toolkits)多个类,这些类被用来构建和管理应用程序的图形化界面。
9    java.swing        此包用于构建图形用户界面,此包相对于java.awt来说是轻量级组建。

java.util.Arrays.sort()
当然,在这些包中,也会存在大量的子包。


3.5静态导入

导入格式:import static 包.类.*;
实例:

package org.lxh.demo08.e;public class Operate{    public static int add(int i,int j){        return i+j;    }    public static int sub(int i,int j){        return i-j;        }    public static int mul(int i,int j){        return i*j;    }    public static int div(int i,int j){        return i/j;    }}


package org.lxh.demo08.f;import static org.lxh.demo08.e.Operate.*;    //静态导入public class StaticImportDemo{    public static void main(String args[]){        System.out.println("3+3="+add(3,3));        System.out.println("3-3="+sub(3,3));        System.out.println("3*3="+mul(3,3));        System.out.println("3/3="+div(3,3));    }}



3.6。jar命令
将*.class 文件压缩成一个文件交给客户使用,那么这样的文件就称为jar文件。

JAR命令中的主要参数:
"C":创建新的文档
"V":生成详细的输入信息
"F":指定存在的文档名

package org.lxh.demo08.demo;public class Hello{    public String getInfo(){        return "Hello World!!!";    }}


将其打包编译:javac -d . Hello.java
将其打成jar包:jar -cvf my.jar org

使用jar包中的类,则必须配置classpath路径。
set classpath = .;d:\packdemo\my.jar

使用jar中的类
package org.lxh.demo08;import org.lxh.demo08.demo.Hello;public class ImportJarDemo{    public static void main(String args[]){        Hello hello = new Hello();        System.out.println(hello.getInfo());        }}
在实际的java开发中往往把一些实用的工具类打成jar包交给用户。
原创粉丝点击