Java day12【第二十三章】包的定义及使用
【第二十三章】包的定义及使用
一.包的定义:
在实际开发的过程之中,一直都有包的概念,利用包可以对类进行包装,以后所有的项目中,类都必须放在包里面。
1.包的定义与使用
对于项目而言,尤其是现代的项目是不可能由一个人完成的,往往在开发的团队中,有2-3位开发者进行项目业务的实现,于是在这样的
情况下就不得不面临一个问题:有可能产生类的重名定义。
在操作系统之中已经明确的定义了一个要求:同一个目录之中不允许存放有相同的程序类文件,但在一个开发中,我们很难保证类的不重复,
所以为了可以进行类的方便管理,那么往往将程序文件放在不同的目录下,而这个目录,我们成为包。
package cn.mldn.demo //定义一个包,"."表示分隔目录 public class tsy { public static void main(String args[]) { System.out.println("Hello World!"); } }
一旦程序开发中有包,此时程序编译后的结果就必须将*.class文件保存在指定的目录之,但是如果手工建立就会非常的麻烦,此时需要进行
打包编译处理:
javac -d . tsy.java
"-d"表示要生成目录,而目录结构就是定义的包的结构
“."表示在当前所在的目录中生成程序类文件
二.包的导入:
利用包的定义实际上就可以将不同的功能的一个类保存在不同的包之中,但是这些类彼此之间有互相调用的关系,那么这个时候就需要import来
导入其他包中的程序类。
范例:定义一个程序类“cn.mldn.util.Message"
package cn.mldn.util; public class Message{ public String getContent(){ return "www.mldn.com"; } }
范例:定义一个测试类使用Message "cn.mldn.text.TestMessage"
package cn.mldn.Test.TestMessage; import cn.mldn.util.Message; public class TestMessage{ public static void main(String args[]){ Message msg = new Message(); System.out.println(msg.getContent()); } }
此时编译的时候:如果有100个类且相互调用严格,无法区分,此时可以交给java自己完成,编译命令:
Javac -d . *.class
特别需要注意的是:关于public class 和 class 定义的区别?
1.public class :类名称必须与文件名称保持一致,一个*.java文件里面只允许有一个public class,同时如果一个类需要被其他的包
所使用,那么这个类一定要定义为public class
2.class:类名称可以与文件名不一致,并且在一个*.java文件中可以提供多个class定义,编译后将形成不同的*.class文件,但是只
能被本包所使用。
在实际开发之中往往有一个*。java源代码文件里面只会提供有一个程序类,而这个程序类都是用public class定义
程序类中定义的包名称必须采用小写的形式,例如:cn.mlcn
当需要引入多个包时候,可以采用:
import cn.mldn.*;
这时候java会根据程序的需求来加载(不是所有都加载)。
但是如果在开发由于某种需求,在不同的包下有相同的类名称Message,此时再编译就会报错:对Message的引用不明确,
此时最简单的方法就是在实例化的时候跟上完整的类名称:包.类