⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java04_12.htm

📁 JAVA的课件
💻 HTM
字号:
<html>

<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Java程序设计</title>
</head>

<body background="Bg.gif">

<p align="center"><font size="5"><b>§4.12 包</b></font></p>     
     
<p align="left"> &nbsp; Java程序就是由一系列的包组成,每一个包拥有自己独有的名字。每个包中可以有若干类和接口,同一个包中不允许有同名的类和接口,但不同包中的类和接口不受此限制。包的引入,解决了类命名冲突的问题。</p>     
<p align="left">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;     
包本身也是分级的,包中还可以有子包。Java的包可以用文件系统存放,也可以存放在数据库中。在WINDOWS中,包是以文件系统存放的,包和类的关系就类似于文件夹和文件的关系;包中的子包,就相当于文件夹内的子文件夹。</p>    
<p align="left">一、包的创建</p>    
<p align="left">&nbsp;&nbsp;&nbsp;     
除了系统提供的包外,用户可以自己定义需要的包,Java     
有两种包:命名包和未命名包。我们前面讲的都是未命名包,例如:</p>    
<p align="left">class HelloWorldAPP{&nbsp;<br>    
&nbsp;public static void main(String args[] ){<br>     
&nbsp;&nbsp;&nbsp; System.out.println("Hello,World!");<br>    
&nbsp; }<br>    
}</p>    
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这时编译系统就认为这是一个未命名包。在Windows系统中,这个包就是当前工作文件夹,这种未命名包都是处在顶层的包。在同一个源文件中的所有类默认都属于同一个包。如果类不在同一源文件中,但都是未命名的包,而且处在同一个工作目录下,那么也认为是属于同一个包。</p>   
<p align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;     
这种方式虽然简便,但是很容易引起命名冲突,而且不便于管理,所以只适合于学习或小型系统的开发,对于大型系统,还得使用命名包。命名包的创建很简单,只要在Java的源文件的第一行写上package语句就可以完成。格式如下:</p>    
<p align="left">package 包名;</p>    
<p align="left">&nbsp;&nbsp;     
指定包名后,该源文件中所有的类都在这个包中。由于Windows中的Java是用文件系统来存放包的,所以会有一个和包名相同的文件夹,该包中所有的类编译生成的class文件都必须放在这个文件夹中。下面来看个简单的例子:</p>    
<p align="left">package onepackage;<br>     
public class firstclass{<br>     
&nbsp; public static void main(String argv[]){<br>    
&nbsp;&nbsp;&nbsp; System.out.println("This class is: firstclass");<br>     
&nbsp;&nbsp; }<br>    
}<br>    
<br>    
public class secondclass{<br>     
&nbsp; public static void main(String argv[]){<br>    
&nbsp;&nbsp;&nbsp; System.out.println("This class is: secondclass");<br>     
&nbsp; }<br>    
}<br>    
<br>    
&nbsp;&nbsp; 上面这两个类是在同一个源程序中,不妨命名为testpackage.java。下面有两种方法编译它:</p>    
<ol>    
  <li>    
    <p align="left">用编译未命名包相同的方法:<br>    
    &nbsp;&nbsp;&nbsp; e:\jdk1.3\example&gt;<b>javac testpackage.java<br>    
    </b>这样会生成两个类文件,分别是:firstclass.class和secondclass.class。由于这两个文件所在的位置是在当前目录下,而不是在包名所对应的文件夹下,所以这时还不能像使用未命名包中的类那样直接用java命令装载它来运行。而应该像下面这样做:<br>    
    &nbsp;&nbsp;&nbsp; e:\jdk1.3\example&gt;md onepackage<br>    
    &nbsp;&nbsp;&nbsp; e:\jdk1.3\example&gt;move firstclass.class onepackage<br>    
    &nbsp;&nbsp;&nbsp; e:\jdk1.3\example&gt;move secondclass.class onepackage<br>    
    即先建立和包同名的文件夹,而后将包中的类文件复制到该文件夹下,然后在当前目录下(注意:当前目录必须包含在classpath的搜索路径中)这样来运行:<br>   
    &nbsp;&nbsp;&nbsp; e:\jdk1.3\example&gt;<b>java&nbsp; onepackage.fistclass</b><br>   
    其中,onepackage就是包的名字,它是不能省略的,注意不能写成这个样子:<br>  
    &nbsp;&nbsp;&nbsp; e:\jdk1.3\example&gt;java&nbsp; onepackage\fistclass<br>    
    但是可以这样写:<br>    
    &nbsp;&nbsp;&nbsp; e:\jdk1.3\example&gt;java&nbsp; onepackage/fistclass</li>    
  <li>    
    <p align="left">用-d参数<br>    
    &nbsp;&nbsp; 对于这种命名包,Java编译器专门提供了一个参数-d,我们可以这样使用:<br>    
    &nbsp;&nbsp;&nbsp; e:\jdk1.3\example&gt;<b>javac -d . testpackage.java<br>    
    </b>它会在当前目录下自动建立一个以包名为名称的文件夹,这里就是onepackage,然后自动将生成的class文件存放到此文件夹下面。运行命令和前面的一样。</li>   
</ol>   
    <p align="left">&nbsp;&nbsp;&nbsp; 在上面的例子中,如果secondclass类与firstclass不在同一个源文件,则要写成下面这个样子,以保证它们在同一个包onepackage中:   
    <p align="left">//这是第一个源文件<br>   
    package onepackage;<br>     
public class firstclass{<br>     
&nbsp; public static void main(String argv[]){<br>    
&nbsp;&nbsp;&nbsp; System.out.println("This class is: firstclass");<br>     
&nbsp;&nbsp; }<br>   
}<br>   
<br>   
    //这是第二个源文件<br>   
    package onepackage;<br>     
public class secondclass{<br>     
&nbsp; public static void main(String argv[]){<br>    
&nbsp;&nbsp;&nbsp; System.out.println("This class is: secondclass");<br>     
&nbsp; }<br>    
}<br>    
    <p align="left">二、包的使用<p align="left">&nbsp;&nbsp;&nbsp;    
包是类和接口的组织者,目的是更好地使用包中的类和接口。通常情况下一个类只能引用本包中的其它类——我们前面所举的例子都是这种情况。如果要引用其它包中的类,则要使用Java提供的访问机制,Java提供了三种实现方法:<p align="left">1.在引用类(或接口)名前面加上它所在的包名,也就是以包名作为类名的前缀:<p align="left">//下面这个类和secondclass不在同一个包中<br>   
public class thirdclass{<br>   
&nbsp; &nbsp; public static void main(String argv[]){<br>    
&nbsp;&nbsp;&nbsp; <b>onepackage</b>.secondclass va=new <b>onepackage</b>.secondclass();<br>  
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println(&quot;成功地使用了secondclass&quot;);<br>   
&nbsp;&nbsp; }<br>   
}<p align="left">2.前面这种方法显然太麻烦,那么可以用import语句引入包中的某个类或接口,这样就可以省略包前缀:<p align="left">//下面这个类和secondclass不在同一个包中<br>  
<b>import onepackage.secondclass;</b><br>  
public class thirdclass{<br>   
&nbsp; &nbsp; public static void main(String argv[]){<br>    
&nbsp;&nbsp;&nbsp;secondclass va=new secondclass();<br>  
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println(&quot;成功地使用了secondclass&quot;);<br>   
&nbsp;&nbsp; }<br>  
}<p align="left">如果本类属于某个有名包,则要写出包的名字,像下面这个样子:<br>  
<b>package otherpackage; </b>//package必须是第一条语句<b><br>  
</b>import onepackage.secondclass;<br>  
public class thirdclass{<br>   
&nbsp; &nbsp; public static void main(String argv[]){<br>    
&nbsp;&nbsp;&nbsp;secondclass va=new secondclass();<br>  
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println(&quot;成功地使用了secondclass&quot;);<br>   
&nbsp;&nbsp; }<br>  
}<p align="left">3.如果从某个包中要引用很多类,还可以用import语句引入整个包:<br>  
package otherpackage;&nbsp;<br>  
<b>import onepackage.*;</b><br>  
public class thirdclass{<br>   
&nbsp; &nbsp; public static void main(String argv[]){<br>    
&nbsp;&nbsp;&nbsp;secondclass va=new secondclass();<br>  
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println(&quot;成功地使用了secondclass&quot;);<br>   
&nbsp;&nbsp; }<br>  
}<p align="left">&nbsp;&nbsp;&nbsp; JDK所提供的所有标准Java类都存放在Java包中,如java.lang包中就包含了运行Java必不可少的系统类。由于系统会自动将java.lang引入,所以不需要在源文件中用import语句来显示地引入这个包。另外,Java规定java.util和java.io是必须提供的标准包,大多数的系统还提供java.applet,  
java.awt和java.net三个包。</p> 
 
<p align="left"><a href="index.htm">回目录</a>    <a href="java04_11.htm">上一课</a>    
<a href="java04_13.htm">下一课</a></p>   
   
</body>      
</html>   
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -