package pack;

 

//为了简化类名的书写:使用一个关键字,import.导入包中的类
import packA.DemoA;
import packB.*;//包括packB目录下多有类!----【packB子文件夹不会导入,只导入packB中的所有类】

 

/*
建议,不要使用通配符*;需要使用包中哪个类,就导入哪个类
eclipse中快捷键,自动导入所使用到的类,Ctrl+Shift+o

 

当导入的多个包中出现类重名,程序中必须写包名

 


建立包名不要重复,可以使用url来完成定义,url是唯一的
www.itcast.cn

 

package cn.itcast.demo
package cn.itcast.test
*/

 

class PakageDemo
{
 public static void main(String[] args)
 {
  //packB.DemoC c = new packB.DemoC();
  DemoC c = new DemoC();
  c.method();
  
  //packA.DemoA d = new packA.DemoA();//如果没有这个import packA.DemoA;
  
  DemoA d = new DemoA();
  d.show();
  
 }

 

}

 

 

 

 

 

/*

 

PackageDemo.java:8: 找不到符号
符号: 类 DemoA
位置: 类 pack.PackageDemo
                DemoA d = new DemoA();
                ^
PackageDemo.java:8: 找不到符号
符号: 类 DemoA
位置: 类 pack.PackageDemo
                DemoA d = new DemoA();
                              ^
2 错误

 

错误原因:类名写错。

 

因为类名的全名是:包名.类名

 

 

 


PackageDemo.java:8: 软件包 packa 不存在
                packa.DemoA d = new packa.DemoA();
                     ^
PackageDemo.java:8: 软件包 packa 不存在
                packa.DemoA d = new packa.DemoA();
                                         ^
2 错误

 


错误原因:packa包不在当前目录下
需要设置classpath,告诉jvm去哪里找指定的packa包。

 

 

 

PackageDemo.java:8: packa.DemoA 在 packa 中不是公共的;无法从外部软件包中对其进
行访问
                packa.DemoA d = new packa.DemoA();
                     ^
PackageDemo.java:8: packa.DemoA 在 packa 中不是公共的;无法从外部软件包中对其进
行访问
                packa.DemoA d = new packa.DemoA();
                                         ^
2 错误

 

错误原因:有了包,范围变大,一个包中的类要被访问,必须要有足够大的权限。
所以被访问的类要被public修饰。

 

 

 

PackageDemo.java:9: show() 在 packa.DemoA 中不是公共的;无法从外部软件包中对其进
行访问
                d.show();
                 ^
1 错误

 

错误原因:类公有后,被访问的成员也要公有才可以被访问。

 

 

 

 

 

总结:
 包与包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰。

 

 不同包中的子类还可以直接访问父类中被protected权限修饰的成员。

 

包与包之间可以使用的权限只有两种,public  protected。

 


             public   protected       default     private
同一个类中        ok         ok             ok          ok
同一个包中         ok         ok             ok
子类                  ok         ok            
不同包中             ok

 

 

 

java.lang : java的核心包 jdk1.2版本以后,该包中的类自动导入。
java.awt: 用于制作图形界面。
java.io:input output  用于操作设备上的数据。
java.util : 这里定义是java的工具类。集合,日期。
java.net:用于网络通讯的。
java.applet:  application  let        server  let    servlet      java server page   jsp 

 

class haha implements Servlet

 

class hehe extends HttpServlet

 

*/

 

 

 

 

package packA;

 

import packB.DemoB;

 

public class DemoA extends DemoB//必须public

 public void show()//必须public
 {
  System.out.println("DemoA show run");
  method();
 }
}

 

 

 

 

package packB;

public class DemoB
{
 /*public*/ protected /*保护*/ void method()//保护后,只有B子类才能访问
 {
  System.out.println("demoB method run");
 }
}

/*
public class DemoC
{

}

 一个**.java文件中只允许有一个public类或者接口
两个都public,必须把Demo重新建一个java文件
*/

 

 

 

package packB;//也可以多层package packb.haha.hehe.heihei;

public class DemoC
{
 public void method()
 {
  
 }
}

 

package pack;
import packA.*;
class JarDemo
{
 public static void main(String[] args)
 {
  DemoA a = new DemoA();
  a.show();
  System.out.println("Hello jar pack!");
 }
}

 

 

 

 

/*

第一:普通类导出jar包,我说的普通类就是指此类包含main方法,并且没有用到别的jar包。

1.在eclipse中选择你要导出的类或者package,右击,选择Export子选项;

2.在弹出的对话框中,选择java文件---选择JAR file,单击next;

3.在JAR file后面的文本框中选择你要生成的jar包的位置以及名字,注意在Export generated class files and resources和Export java source files and resources前面打上勾,单击next;

4.单击两次next按钮,到达JAR Manifest Specification。注意在最底下的Main class后面的文本框中选择你的jar包的入口类。单击Finish,完成。

你可以在dos环境下,进入你的jar所在的目录,运行 java -jar 名字.jar,检测运行是否正确。

第二、你所要导出的类里边用到了别的jar包。比如说你写的类连接了数据库,用到数据库驱动包oracl.jar.。

1.先把你要导出的类按照上面的步骤导出形成jar包,比如叫test.jar

2.新建一个文件夹main,比如在D盘根目录下;

3.把test.jar和oracl.jar拷贝到main文件下,右击test.jar,解压到当前文件夹。把META-INF\MANIFEST.MF剪切到另外一个地方 (比如是桌面!) ;

4.右击oracl.jar,解压到当前文件夹。

5.在dos环境下,进入到D盘的main文件夹下,执行 jar cvfm new.jar meta-inf/manifest.mf .,不要忘了最后面的点。

6.用压缩工具打开你新生成的new.jar,用你放在桌面的META-INF\MANIFEST.MF覆盖new.jar原有。

你可以在dos环境下,进入你的jar所在的目录,运行 java -jar 名字.jar,检测运行是否正确。
 
 
把jar包中的类名列出在一个txt文件中 

*/

 

 

posted on 2013-03-14 11:27  Stone_S123  阅读(252)  评论(0编辑  收藏  举报