<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java 包(package) 為了更好地組織類,Java提供了包機制,用于區別類名的命名空間。 **包的作用** * 1 把功能相似或相關的類或接口組織在同一個包中,方便類的查找和使用。 * 2 如同文件夾一樣,包也采用了樹形目錄的存儲方式。同一個包中的類名字是不同的,不同的包中的類的名字是可以相同的,當同時調用兩個不同包中相同類名的類時,應該加上包名加以區別。因此,包可以避免名字沖突。 * 3 包也限定了訪問權限,擁有包訪問權限的類才能訪問某個包中的類。 Java使用包(package)這種機制是為了防止命名沖突,訪問控制,提供搜索和定位類(class)、接口、枚舉(enumerations)和注釋(annotation)等。 包語句的語法格式為: ``` package pkg1[.pkg2[.pkg3…]]; ``` 例如,一個Something.java 文件它的內容 ``` package net.java.util public class Something{ ... } ``` 那么它的路徑應該是 net/java/Something.java 這樣保存的。 package(包)的作用是把不同的java程序分類保存,更方便的被其他java程序調用。 一個包(package)可以定義為一組相互聯系的類型(類、接口、枚舉和注釋),為這些類型提供訪問保護和命名空間管理的功能。 以下是一些Java中的包: * java.lang-打包基礎的類 * java.io-包含輸入輸出功能的函數 開發者可以自己把一組類和接口等打包,并定義自己的package。而且在實際開發中這樣做是值得提倡的,當你自己完成類的實現之后,將相關的類分組,可以讓其他的編程者更容易地確定哪些類、接口、枚舉和注釋等是相關的。 由于package創建了新的命名空間(namespace),所以不會跟其他package中的任何名字產生命名沖突。使用包這種機制,更容易實現訪問控制,并且讓定位相關類更加簡單。 ## 創建包 創建package的時候,你需要為這個package取一個合適的名字。之后,如果其他的一個源文件包含了這個包提供的類、接口、枚舉或者注釋類型的時候,都必須將這個package的聲明放在這個源文件的開頭。 包聲明應該在源文件的第一行,每個源文件只能有一個包聲明,這個文件中的每個類型都應用于它。 如果一個源文件中沒有使用包聲明,那么其中的類,函數,枚舉,注釋等將被放在一個無名的包(unnamed package)中。 ### 例子 讓我們來看一個例子,這個例子創建了一個叫做animals的包。通常使用小寫的字母來命名避免與類、接口名字的沖突。 在animals包中加入一個接口(interface): ``` /* 文件名: Animal.java */ package animals; interface Animal { public void eat(); public void travel(); } ``` 接下來,在同一個包中加入該接口的實現: ``` package animals; /* 文件名 : MammalInt.java */ public class MammalInt implements Animal{ public void eat(){ System.out.println("Mammal eats"); } public void travel(){ System.out.println("Mammal travels"); } public int noOfLegs(){ return 0; } public static void main(String args[]){ MammalInt m = new MammalInt(); m.eat(); m.travel(); } } ``` 然后,編譯這兩個文件,并把他們放在一個叫做animals的子目錄中。 用下面的命令來運行: ``` $ mkdir animals $ cp Animal.class MammalInt.class animals $ java animals/MammalInt Mammal eats Mammal travel ``` ## import關鍵字 為了能夠使用某一個包的成員,我們需要在 Java 程序中明確導入該包。使用"import"語句可完成此功能。 在 java 源文件中 import 語句應位于 package 語句之后,所有類的定義之前,可以沒有,也可以有多條,其語法格式為: ``` import package1[.package2…].(classname|*); ``` 如果在一個包中,一個類想要使用本包中的另一個類,那么該包名可以省略。 ### 例子 下面的payroll包已經包含了Employee類,接下來向payroll包中添加一個Boss類。Boss類引用Employee類的時候可以不用使用payroll前綴,Boss類的實例如下。 ``` package payroll; public class Boss { public void payEmployee(Employee e) { e.mailCheck(); } } ``` 如果Boss類不在payroll包中又會怎樣?Boss類必須使用下面幾種方法之一來引用其他包中的類 使用類全名描述,例如: ``` payroll.Employee ``` 用import關鍵字引入,使用通配符"*" ``` import payroll.*; ``` 使用import關鍵字引入Employee類 ``` import payroll.Employee; ``` **注意:** 類文件中可以包含任意數量的import聲明。import聲明必須在包聲明之后,類聲明之前。 ## package的目錄結構 類放在包中會有兩種主要的結果: * 包名成為類名的一部分,正如我們前面討論的一樣。 * 包名必須與相應的字節碼所在的目錄結構相吻合。 下面是管理你自己java中文件的一種簡單方式: 將類、接口等類型的源碼放在一個文本中,這個文件的名字就是這個類型的名字,并以.java作為擴展名。例如: ``` // 文件名 : Car.java package vehicle; public class Car { // 類實現 } ``` 接下來,把源文件放在一個目錄中,這個目錄要對應類所在包的名字。 ``` ....\vehicle\Car.java ``` 現在,正確的類名和路徑將會是如下樣子: * 類名 -&gt; vehicle.Car * 路徑名 -&gt; vehicle\Car.java (in windows) 通常,一個公司使用它互聯網域名的顛倒形式來作為它的包名.例如:互聯網域名是apple.com,所有的包名都以com.apple開頭。包名中的每一個部分對應一個子目錄。 例如:這個公司有一個com.apple.computers的包,這個包包含一個叫做Dell.java的源文件,那么相應的,應該有如下面的一連串子目錄: ``` ....\com\apple\computers\Dell.java ``` 編譯的時候,編譯器為包中定義的每個類、接口等類型各創建一個不同的輸出文件,輸出文件的名字就是這個類型的名字,并加上.class作為擴展后綴。 例如: ``` // 文件名: Dell.java package com.apple.computers; public class Dell{ } class Ups{ } ``` 現在,我們用-d選項來編譯這個文件,如下: ``` $javac -d . Dell.java ``` 這樣會像下面這樣放置編譯了的文件: ``` .\com\apple\computers\Dell.class.\com\apple\computers\Ups.class ``` 你可以像下面這樣來導入所有 \com\apple\computers\中定義的類、接口等: ``` import com.apple.computers.*; ``` 編譯之后的.class文件應該和.java源文件一樣,它們放置的目錄應該跟包的名字對應起來。但是,并不要求.class文件的路徑跟相應的.java的路徑一樣。你可以分開來安排源碼和類的目錄。 ``` <path-one>\sources\com\apple\computers\Dell.java <path-two>\classes\com\apple\computers\Dell.class ``` 這樣,你可以將你的類目錄分享給其他的編程人員,而不用透露自己的源碼。用這種方法管理源碼和類文件可以讓編譯器和java虛擬機(JVM)可以找到你程序中使用的所有類型。 類目錄的絕對路徑叫做class path。設置在系統變量CLASSPATH中。編譯器和java虛擬機通過將package名字加到class path后來構造.class文件的路徑。 &lt;path- two&gt;\classes是class path,package名字是com.apple.computers,而編譯器和JVM會在 &lt;path-two&gt;\classes\com\apple\compters中找.class文件。 一個class path可能會包含好幾個路徑。多路徑應該用分隔符分開。默認情況下,編譯器和JVM查找當前目錄。JAR文件按包含Java平臺相關的類,所以他們的目錄默認放在了class path中。 ## 設置CLASSPATH系統變量 用下面的命令顯示當前的CLASSPATH變量: * Windows平臺(DOS 命令行下)-&gt; C:\&gt; set CLASSPATH * UNIX平臺(Bourne shell下)-&gt; % echo $CLASSPATH 刪除當前CLASSPATH變量內容: * Windows平臺(DOS 命令行下)-&gt; C:\&gt; set CLASSPATH= * UNIX平臺(Bourne shell下)-&gt; % unset CLASSPATH; export CLASSPATH 設置CLASSPATH變量: * Windows平臺(DOS 命令行下)-&gt; set CLASSPATH=C:\users\jack\java\classes * UNIX平臺(Bourne shell下)-&gt; % CLASSPATH=/home/jack/java/classes; export CLASSPATH
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看