Java中的包與導入


包(package)

  包(package)用於將完成不同功能的類分類,放在不同的目錄(包)下。

 

包的命名

  包的命名規則:將公司域名反轉作為包名。

  包名一般每個字母都要小寫

  把類定義在某個包下面,一般在源文件開頭加上package xxx.yyy;

  則類的全名是xxx.yyy.類名

  如果定義類的時候沒有使用package指定包名,則Java認為類位於默認包里面(default package)。

 

編譯執行

  如果程序中聲明了包名,即首行寫了package com.xxx;

  那么如果按照一般的編譯方式 javac 源文件名.java

  會在當前目錄下生成class文件。

  然后直接用:java源文件名執行,則會報錯。

  出現java.lang.NoClassDefFoundError

 

產生問題的原因

  包的意義在於產生一種目錄結構,所以class文件必須位於相應的目錄層次結構中。

  以package com.xxx為例:

  一種解決方式是手工建立com文件夾,里面建立xxx文件夾,把生成的class文件放在目錄結構中,並且執行的時候采用java 完整類名(即帶上包名)才能夠執行。

 

不需要手動建立文件夾的解決手段

  使用編譯參數 -d的解決方法:

  編譯的時候可以在javac命令中采用-d指定存放生成的類文件的位置

  -d . 可以在當前目錄下生成。

  用如下命令:

  javac –d . 源文件名.java

  則編譯后在當前目錄下,編譯器會生成包的文件目錄層次結構,並且把class文件放入其中。

  如果不用“.”,也可以指定目錄。

  用java命令執行的時候需要將包的信息全部帶上,即用完整的加包名的形式執行。

  執行:

  java 完整類名

 

子包

  有兩個包名,分別是aa.bb.cc與aa.bb.cc.dd,那么我們稱后者為前者的子包

 

導入

  導入(import),將使用package分離的各個類導入回來,讓編譯器能夠找到所需要的類。

  使用在同一個包下的類不需要導入可以直接用,使用不同的包下的類才需要導入。

  使用格式:

  import aaa.bbb.ccc;

  可以使用通配符“*”代替類名,將包中的所有類導入:

  import aaa.bbb.*;

  注意:

  import aaa.bbb.*;並不會導入import aaa.bbb.ccc包下面的類。

 

順序問題

  關於package、import、class的順序問題:

  1.首先需要定義包(package),可選;

  2.接下來使用import進行導入,可選;

  3.class或者interface的定義。

 

包導入與訪問權限

  訪問權限修飾符有四類:

  public:允許所有類訪問。

  private:允許本類訪問。

  protected:允許本類、子類、同一個包中的類訪問。

  默認情況:即不加訪問修飾符的情況,允許本類和同一個包中的類訪問。

  import相應的包之后只是使相應的類可見,是否可以訪問其中的成員還是由訪問修飾符所決定。如默認修飾的成員,即便將相應類的包導入,但是如果當前類不在同一個包中,還是不能訪問。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM