java之10天 包 package

1 篇文章 0 订阅
1 篇文章 0 订阅
包(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 或者 protected
		System.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");
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值