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

来源:互联网 发布:数控铣床加工中心编程 编辑:程序博客网 时间:2024/06/06 12:34
 

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

分类: Java
本章目标:
了解多人开发的问题
掌握包的作用及定义
掌握包的导入语法及导入限制
了解系统常用包
掌握Java新特性——静态导入
掌握jar命令的使用


大型程序开发

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

包的定义:

package 包名称.子包名称;

[java] view plaincopyprint?
  1. package org.lxh.demo08;        //定义一个包  
  2. class Demo{  
  3.     public String getInfo(){  
  4.         return "Hello World!!!";          
  5.     }  
  6. }  
  7. public class PackageDemo01{  
  8.     System.out.println(new Demo().getInfo());  
  9. }  


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

为程序打包编译:

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

java org.lxh.demo08.PackageDemo01

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

3.3包的导入

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

import语句

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

Demo.java
[java] view plaincopyprint?
  1. public org.lxh.demo08.a;  
  2. public class Demo{  
  3.     public String getInfo(){  
  4.         return "Hello World!!!";      
  5.     }  
  6. }  



[java] view plaincopyprint?
  1. package    org.lxh.demo08.b;    //放在不同的包中  
  2. import    org.lxh.demo08.a.Demo;    //导入不同中的Demo类  
  3. public class ImportDemo01{  
  4.     public static void main(String args[]){  
  5.         System.out.println(new Demo().getInfo());      
  6.     }  
  7. }  


编译的时候,应该先编译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.*;
两者的性能都一样。


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



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 包.类.*;
实例:

[java] view plaincopyprint?
  1. package org.lxh.demo08.e;  
  2. public class Operate{  
  3.     public static int add(int i,int j){  
  4.         return i+j;  
  5.     }  
  6.     public static int sub(int i,int j){  
  7.         return i-j;      
  8.     }  
  9.     public static int mul(int i,int j){  
  10.         return i*j;  
  11.     }  
  12.     public static int div(int i,int j){  
  13.         return i/j;  
  14.     }  
  15. }  


[java] view plaincopyprint?
  1. package org.lxh.demo08.f;  
  2. import static org.lxh.demo08.e.Operate.*;    //静态导入  
  3. public class StaticImportDemo{  
  4.     public static void main(String args[]){  
  5.         System.out.println("3+3="+add(3,3));  
  6.         System.out.println("3-3="+sub(3,3));  
  7.         System.out.println("3*3="+mul(3,3));  
  8.         System.out.println("3/3="+div(3,3));  
  9.     }  
  10.   
  11. }  



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

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

[java] view plaincopyprint?
  1. package org.lxh.demo08.demo;  
  2. public class Hello{  
  3.     public String getInfo(){  
  4.         return "Hello World!!!";  
  5.     }  
  6. }  


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

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

使用jar中的类
[java] view plaincopyprint?
  1. package org.lxh.demo08;  
  2. import org.lxh.demo08.demo.Hello;  
  3. public class ImportJarDemo{  
  4.     public static void main(String args[]){  
  5.         Hello hello = new Hello();  
  6.         System.out.println(hello.getInfo());      
  7.     }  
  8. }  
在实际的java开发中往往把一些实用的工具类打成jar包交给用户。
0 0