Java--包的概念及使用

包的概念及使用
一. 包的基本概念
可以试想这样一个场景,现在如果有多个人开发一个共同项目,则肯定会出现类名称相同的情况,这样一来就会比较麻烦,所以利用package关键字来解决此问题。
包实际上是一个文件夹,在需要定义多个类或者接口时,为了避免名称重复而采用的一种措施,如果使用直接在程序中加入package关键字即可。
下面使用package关键字进行一个程序的打包
【代码】

package org.zhao.demo08;//定义一个包
class Demo
{
    public String getInfo(){
        return "Hello World";
    }
}
public class PackageDemo01
{
    public static void main(String args[]){
        System.out.println(new Demo().getInfo());
    }
}

以上程序功能为输出一个语句,但是因为程序在包里,所以编译时必须如下:

javac -d . PackageDemo01.java

在上面的编译命令中加入了下面的参数:
*-d:表示生成目录,生成的目录以package的定义标准。
.:表示在当前所在的文件夹中生成*
编译完成后可以再相应的目录下找到,执行时:
必须输入完整的“包.类名称”

java org.zhao.demo08.PackageDemo01

运行结果:

Hello World

程序的运行结果与之前并没有什么不同,所以加入包不过是为了让类的管理更加方便。
二. import语句
上例中的两个类是在同一包中的,因此代码之前没有什么根本的不同,但是如果几个类放在不同的包中,则在使用不同包的类时必须通过import语句导入,import格式:
***import 包名称.子包名称.类名称;—-》手动导入所需要的类
import 包名称.子包名称.; —》由JVM自动加载所需要的类**
以上两种格式本身没有多大区别,只是一般都比较习惯于使用后者。
实例:
定义org.zhao.demo08.a.Demo类

package org.zhao.demo08.a;
class Demo
{
    public String getInfo(){
        return "Hello World";
    }
}

定义另外一个引用的类:

package org.zhao.demo08.b;
import org.zhao.demo08.a.Demo;
public class PackageDemo01
{
    public static void main(String args[]){
        System.out.println(new Demo().getInfo());
    }
}

以上程序中要先使用Demo类,因此先进行编译Demo类,然后编译引用类:
但是在编译引用类的时候会出现错误:

ImportDemo01.java:3: 错误: 类PackageDemo01是公共的, 应在名为 PackageDemo01.java 的文件中声明
public class PackageDemo01
       ^
ImportDemo01.java:2: 错误: Demo在org.zhao.demo08.a中不是公共的; 无法从外部程序包中对其进行访问
import org.zhao.demo08.a.Demo;
                        ^
ImportDemo01.java:6: 错误: 找不到符号
                System.out.println(new Demo().getInfo());
                                       ^
  符号:   类 Demo
  位置: 类 PackageDemo01
3 个错误

从提示可以发现Demo类不是public定义的,所以在ImportDemo01是无法进行访问。
修改Demo类:

package org.zhao.demo08.a;
public class Demo
{
    public String getInfo(){
        return "Hello World";
    }
}

再次编译运行结果:

Hello World

如果要在一个类中导入一个包中多个类,可以使用导入方式的第二种。
需要注意的是,当要导入两个包中相同名称的类时,最好的做法就是在声明类的对象时写上完整的“包.类名称”,一面发生歧义而编译错误
三. Java新特性—静态导入
在jdk1.5之后提供了静态导入功能。如果一个类中的方法全部是使用static声明的静态方法,则在导入时就可以直接使用import static 的方式导入,导入的格式如下:
【静态导入】

import static 包.类.*;

下面介绍静态导入:
定义一个类,全部由静态方法组成:

package org.zhao.demo08.e;
public class Operate
{
    public static int add(int i,int j){
        return i+j;
    };
    public static int sub(int i,int j){
        return i-j;
    };
    public static int mul(int i,int j){
        return i*j;
    };
    public static int div(int i,int j){
        return i/j;
    };
}

以上代码的类中的全部方法为static类型,所以在导入时就可以使用静态导入的方式。
【静态导入】

package org.zhao.demo08.f;
import static org.zhao.demo08.e.Operate.*;
public class StaticImportDemo
{
    public static void main(String args[]){
        System.out.println("3+3="+add(3,3));
        System.out.println("3-3="+sub(3,3));
        System.out.println("3*3="+mul(3,3));
        System.out.println("3/3="+div(3,3));
    }
}

运行结果:

3+3=6
3-3=0
3*3=9
3/3=1

以上程序中使用了静态导入,所以Operate类中的所有静态方法可以直接在StaticImportDemo类中使用,而不再需要使用“类.静态方法()”的形式调用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aotulive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值