Java核心(类的高级特性-Java类包)

一、Java 类包

    1.1 类名冲突

    Java 中每个接口或类都来自不同的类包,无论是 Java API 中的类与接口还是自定义的类与接口都需要隶属于某一个类包,这个类包包含了一些类和接口。如果没有包的存在,管理程序中的类名称将是一件非常麻烦的事,如果程序只由一个类定义组成,并不会给程序带来什么影响,但是随着程序代码的增多,难免会出现类同名的问题。例如,在程序中定义了个 Login 类,因业务需要,还要定义一个名称为 Login 的类,但是这两个类所实现的功能完全不同,于是问题就产生了,编译器不会允许存在同名的类文件。解决这类问题的办法是将这两个类放置在不同的类包中。

    1.2 完整的类路径

    eg   java.lang.Math;  

    java.lang  包的名称  

    Math  类的名称

    一个完整的类名需要包名与类名的组合,每个类都隶属于一个类包,只要保证同一类包中的类不同名,就可以有效地避免同名类冲突的情况。例如,一个程序中同时使用到 java.util.Date 类与 java.sql.Date 类,如果在程序中不指定完整类路径,编译器不会知道这段代码使用的是 java.util 类包中的 Date 类还是 java.sql 类包中的 Date 类,所以需要在指定代码中给出完整的类路径。

    eg :在程序中使用两个不同 Date 类的完整类路径

java.util.Date date = new java.util.Date();
java.sql.Date date2 = new java.sql.Date(233);

    在 Java 中采用类包机制非常重要,类包不仅可以解决类名冲突问题,还可以在开发庞大的应用程序时,帮助开发人员管理庞大的应用程序组件,方便软件复用。

    同一个包中的类相互访问时,可以不指定包名。

    1.3  创建包

    定义包名的语法:

package 包名;

    在类中指定包名时需要将 package 表达式放置在程序的第一行,它必须是文件中的第一行非注释代码,当使用 package 关键字为类指定包名之后,包名将会成为类名中的一部分,预示着这个类必须指定全名。

    Java 包的命名规则是全部使用小写字母。

    eg :在项目中创建 Math 类,在创建类的对话框中指定包名为 com.ljs ,并在主方法中输出说明该类并非 java.lang 包的类。

package com.ljs;        //指定包名
public class Math{
    public static void main(String[] aegs){
        System.out.println("不是 java.lang.Math 类,而是 com.ljs.Math 类");
    }
}

    运行结果:

不是 java.lang.Math 类,而是 com.ljs.Math 类

    1.4  导入包

    1.4.1  使用 import 关键字导入包

    如果某个类需要使用  Math 类,那么可以使用 Java 中的 import 关键字指定。如果在程序中使用 import com.ljs 表达式,在程序中使用 Math 类时就会选择 com.ljs.Math 类来使用,当然也可以直接在程序中使用 Math 类时指定 com.ljs.Math 类。

    import 关键字的语法:

import com.ljs.*;        //指定 com.ljs 包中的所有类在程序中都可以使用
import com.ljs.Math;     //指定 com.ljs 包中的 Math 类在程序中都可以使用

    在使用 import 关键字时,可以指定类的完整描述,如果为了使用包中更多的类,可以使用 import 关键字指定时在包指定后加上 * ,这表示可以在程序使用包中的所有类。

    如果类定义中已经导入 com.ljs.Math 类,在类体中在使用其他包中的 Math 类时则必须指定完整的带有包格式的类名,如这种在使用 java.lang 包中的 Math 类时就要使用全名格式 java.lang.Math 。

    在程序中添加 import 关键字时,就开始在 CLASSPATH 指定的目录中进行查找,查找子目录 com.ljs ,然后从这个目录下编译完成的文件中查找是否有名称符合者,最后寻找到 Math.class 文件。另外,当使用 import 指定了一个包中的所有类时,并不会指定这个包的子包中的类,如果用到这个包中的子类,需要再次对子包作单独引用。

    在 Java 中将 Java 源文件与类文件放在一起管理是极为不好的管理方式。可以在编译时使用 -d 参数设置编译后类文件产生的位置。使用 DOS 进入程序所在的根目录下,执行如下命令:

javac -d ./bin/ ./com/ljs/*.java

    这样编译成功后将在当前运行路径下的 bin 目录中产生 com/ljs 路径,并在该路径下出现相应源文件的类文件。如果使用 Eclipse 编译器,并在创建项目时设置了源文件与输出文件的路径,编译后的类文件会自动保存在输出文件的路径中。

    如果不能再程序所在根目录下使用 javac.exe 命令,注意在 path 环境变量中设置 Java 编译器所在的位置,假如是 C:\Java\jdk 1.6.0_03\bin ,可以使用 set path=C:\Java\jdk 1.6.0_03\bin;%path% 命令在 DOS 中设置 path 环境变量。

    1.4.2 使用 import 导入静态成员

    import 关键字除了导入包之外,还可以导入静态成员。

   import 导入静态成员的语法:

import static 静态成员;

    eg : 在项目中创建 ImportTest 类,在该类中使用 import 关键字导入静态成员。

package com.ljs;
import static java.lang.Math.max;//导入静态成员方法
import static java.lang.System.out;//导入静态成员变量
public class ImportTest{
    public static void main(Stirng[] args){
        //在主方法中可以直接使用这些静态静态成员
        out.println("1 和 4 的较大值为:" + max(1,4));
    }
}

    运行结果为:

1 和 4 的较大值为:4
    非标使用 import static 导入了 java.lang.Math 类中的静态成员方法 max() 和 java.lang.System 类中的 out 成员变量,这时就可以在程序中直接饮用这些静态成员,如在主方法中的 out.println() 表达式以及直接使用 max() 方法。

    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值