java之10天 包 package
包(package):
import
jar
package pack;import com.sh.cn.packa.DemoE; //简化类名的书写. 出现 import/**------------------------------------------ *包(package): 类是 window系统中的 文件夹 *优点: * 1.对类文件进行分类管理 * 2.给类提供多层命名空间 * 3.写在程序的的第一行 * 4.类名的全称是 包名.类名 * 5.包也是一种封装形式 * * 总结: 包和包之间进行访问,被访问的包中的类以及类中的成员,需要public修饰 不同包中的子类还可以直接访问父类中被protected权限修饰的成员 包与包之间可以使用的权限只有两种: public protected 权限总结: public protected default private 同一个类中 Ok Ok Ok Ok 同一个包中 Ok Ok Ok 子类 Ok Ok 不同包中 Ok javac -d c:\myclass PackageDemo.java java pack.PackageDemo--------------------- import的特点 c:\myclass\packb\DemoA.class c:\myclass\packb\haha\DemoZ.class import packb.*; //只能导入 packb目录下的所以class,不包含子目录下的 class //即这样导入 DemoZ 不能使用 必须写上全路径名packb.haha.DemoZ(); //如果导入的包中存在重复的class 在使用的时候 必须加上包名 建议: 不要写通配符 * ,需要用到包中的哪个类,就导入哪个类 定义包名不要重复,可以使用URL来定义, url是唯一的 比如: 网站为 www.icbc.com.cn 就可以使用 下面来命名 package cn.com.icbc.demo; package cn.com.icbc.test; -------------------- jar包: java 的压缩包 方便项目的携带 方便使用,只要在classpath中设置jar 的路径即可 数据库驱动,SSH框架都是以jar包体现的. cd c:\myclss jar -cf haha.jar packa packb //将 packa 和 packab 两个文件夹 打包成 haha.jar jar -tf haha.jar //查看 haha.jar 中的内容. 使用的时候 set classpath=c:\myclass\haha.jar jar -cfv haha.jar packa packb 显示压缩的详情 jar -tfv haha.jar 显示 haha.jar中的详情 jar -tfv haha.jar > c:\1.txt 将详情信息 转移到1.txt文件中去 一般对于要显示的内容比较多. */class PackageDemo {public static void main(String[] args){ packa.Demo d=new packa.Demo(); d.show(); //编译通过 运行失败 原因:类型转换失败 packb.DemoB db=new DemoE(); //多态 父类引用指向子类的对象 packb.DemoF df=(packb.DemoF)db; //向下转型 df.methods(); packb.DemoB db=new com.sh.cn.packa.DemoE(); db.methods(); packb.DemoB df=new packb.DemoF(); df.methods(); //编译通过 运行失败 原因:类型转换失败 packb.DemoB db1=new packb.DemoB(); com.sh.cn.packa.DemoE de=(com.sh.cn.packa.DemoE)db1; de.methods(); packb.DemoD dd=new packb.DemoD(); //如果 DemoD不是 public 那么编译也会报错 System.out.println(dd.add(1,2)); }}package packa;public class Demo extends packb.DemoB{public void show(){ methods(); System.out.println("Demo Show run");}}package packb;public class DemoB {protected void methods(){System.out.println("DemoB method run");}}class DemoC extends DemoB{public void methods(){ //这个修饰必须是 public 或者 protectedSystem.out.println("DemoC method run");}}//如果要在 PackageDemo中使用这个类 那么这个 DemoD 也要 使用 public 修饰 而且 还是同一个 packb中 这样才行 //因为一个文件中只能有一个public 的类/*class DemoD {public int add(int a,int b){ return a+b;}}*/package packb;//如果要在 PackageDemo中使用这个类 那么这个 DemoD 也要 使用 public 修饰 而且 还是同一个 packb中 这样才行 //因为一个文件中只能有一个public 的类public class DemoD {public int add(int a,int b){ return a+b;}}package com.sh.cn.packa;public class DemoE extends packb.DemoB{public void methods(){ System.out.println("DemoE methods run");}}package packb;public class DemoF extends com.sh.cn.packa.DemoE{public void methods(){System.out.println("DemoF methods run");}}