java之10天 包 package

[size=medium][b]包(package):
import
jar[/b][/size]

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、付费专栏及课程。

余额充值