包的定义
在实际的项目开发之中,肯定要一直存在有包的概念,利用包可以实现类的包装,在以后的实际开发之中,所有的类都必须放在包里面
包的定义与使用:
对于项目而言,尤其是现在的项目是不可能一个人开发完成的,往往在一个项目的开发团队之中会有2~3位开发者进行项目业务的实现,于是在这样的情况下就不得不面对一个问题,会产生重名的问题。
在操作系统之中已经明确严格的定义了一个要求:同一个目录之中不允许存放有相同的程序类文件,但是在开发之中很难保证类的不重复,所以为了可以进行类的方便管理,那么往往可以将程序文件放在不同的目录下,不同的目录之中是可以提供有相同文件的,而这个目录就称为包。包 = 目录。
范例:定义包
package cn.mldn.demo ; // 定义包,其中.表示分割子目录(子包)
public class Hello {
public static void main(String args[]){
System.out.println("Hello World!") ;
}
}
一旦程序开发之中出现有包,此时程序编译后的结果就必须将*.class文件保存在指定的目录之中,但是如果手工建立非常麻烦,那么此时最好的做法是可以进行打包编译处理:
javac -d . Hello.java
“-d”:表示要生成目录,而目录的结构就是package定义的结构;
“.”:表示在当前所在的目录中生成程序类文件;
在程序执行的时候一定要带着包执行程序类
java cn.mldn.demo.Hello
也就是说从此之后完整的类名称是“包.类”名称。
包的导入
利用包的定义实际上就可以将不同的功能的类保存在不同的包之中,但是这些类彼此之间也一定会存在互相调用的时候,那么这个时候就需要import语句来导入其他包中的程序类。
范例:定义一个程序类“cn.mldn.util.Message”,这个类负责进行一个消息数据获取
package cn.mldn.util ; // 定义包,其中.表示分割子目录(子包)
public class Message {
public String getContent(){
return "www.mldn.cn" ;
}
}
定义一个测试类使用Message类“cn.mldn.test.TestMessage”。
package cn.mldn.test ;
import cn.mldn.util.Message ; // 导入其他包的类
public class TestMessage {
public static void main(String args[]){
Message msg = new Message() ; // 实例化对象
System.out.println(msg.getContent()) ;
}
}
此时按照使用顺序来讲肯定会要先Message.java,而后再编译TestMessage.java,但是你思考一个问题,如果现在你写了一个程序代码,里面有100个类,彼此之间互相引用严格,此时你怎么区分?那么这个时候最好的做法不是区分顺序,而是直接交给Java自己完成,编译的命令:
javac -d . *.java;
package cn.mldn.util ;
public class Message {
public String getContent(){
return "www.mldn.cn" ;
}
}
package cn.mldn.test ;
import cn.mldn.util.Message ; // 导入其他包的类
public class TestMessage {