首頁 > 軟體

深入瞭解Java包與存取控制許可權

2022-09-26 14:06:06

1、包的概念及使用

(1)基本概念

package是在使用多個類或介面時,為了避免名稱重複而採用的一種措施,直接在程式中加入package關鍵字即可

格式如下:

package 包名稱.子包名稱;

範例:

package org.lxh.test;
class Demo{
    public String getInfo(){
        return "Hello World !!!";
    }
}
public class Test{
    public static void main(String[] args) {
        System.out.println(new Demo().getInfo());
    }
}

此時編譯時需要加上相應引數:javac -d.Test.java

-d :表示生成目錄,生成的目錄以 package 的定義為準 . : 表示在當前所在資料夾中生成

執行完以上命令後,會自動生成相應的資料夾(包),之後再執行類時就必須輸入完整的“包.類名稱”

(2)import 語句

如果幾個類存放在不同的包中,在使用類時就必須通過 import 語句匯入

import 的語法格式:

import 包名稱.子包名稱.類名稱;    //手工匯入所需要的類
import 包名稱.子包名稱.*;//由JVM自動載入所需要的類

範例:定義 org.lxh.test 目錄下的 Demo1.java

package  org.lxh.test;

public class Demo1{
  public String getInfo(){
    return "Hello World!";
  }
}

範例:在另外一個類中參照Demo類

import org.lxh.test.Demo1;//參照 Demo1 類

public class Test{
    public static void main(String[] args) {
        System.out.println(new Demo1().getInfo());
    }
}

如果在一個類中匯入一個包中多個類時,一個個地匯入會比較麻煩,可以使用匯入“*” 的方式由 JVM 根據需要自己載入的類。==但是當一個程式中同時匯入了兩個包的同名類,使用時就必須明確地寫出完整的“包.類名稱”。==

範例:

import org.lxh.demo.a.*;//包中存在Demo類
import org.lxh.demo.c.*;//包中存在Demo類
public class Test{
	public static void main(String[] args){
		org.lxh.demo.a.Demo d = new org.lxh.demo.a.Demo();
		System.out.println(d.getInfo());
	}
}

(3)系統常見包

在JDK中為了方便使用者開發程式,提供了大量的系統功能包,如下圖所示:

java.util包在開發中使用較多,因為其支援大量的工具類操作,像本書中的常用類庫、 Java 類集都是圍繞此包展開講解的。

java.lang.reflect這個包一般在面試時有可能會問到,此包屬於比較高階的開發包。

(4)Java 新特性 – 靜態匯入

如果一個類中的方法全部是使用static宣告的靜態方法,則在匯入時就可以直接使用 import static 的方式匯入:

import static 包.類.*

範例:定義一個類,全部由靜態方法組成

package org.lxh.test;

public class Demo1{
    public static  int add(int i,int j){
        return i+j;
    }
    public static int sub(int i,int j){
        return i-j;
    }
    public static int mul(int i,int j){
        return i*j;
    }
}

使用靜態匯入:

import static org.lxh.test.Demo1.*;//靜態匯入

public class Test{
    public static void main(String[] args) {
        System.out.println("3+3 = " + add(3,3));
        System.out.println("3-3 = " + sub(3,3));
    }
}

由於程式中使用了靜態匯入,所以Demo1 類中的所有靜態方法可以直接在 Test 類中使用,而 不需要使用 “類.靜態方法()” 的形式使用。

2、jar命令的使用

當開發者為客戶開發出了一套 Java 類之後,肯定要把這些類交給使用者使用,但是如果所有的類直接通過 *.class 的格式給使用者,會比較麻煩,所以一般情況下會將這些 *.class 檔案壓縮車一個檔案交付給客戶使用,那麼這樣的檔案就稱為 jar 檔案(Java Archive File)。

如果要想生成 jar 檔案,直接使用 JDK 中 bin 目錄裡的 jar.exe 就可以將所有的類檔案進行壓縮,此命令是隨 JDK 一起安裝的,直接在命令列中輸入 jar,即可看到此命令的提示介面:

當用戶得到一個 jar 檔案後,可以通過設定 classpath 的方式在系統中註冊號此 jar 檔案,以供程式使用。

jar 命令主要使用的引數如下:

C:建立新的檔案

V:生成詳細的輸出資訊

F:指定存檔的檔名

範例:定義一個類:

package org.lxh.test.demo;

public class Test{
    public class Test{
        public String getInfo(){
            return "Hello";
        }
    }
}

進行編譯

javac -d.Test.java

編譯成功

將生成的 a 資料夾打包,命名為 my.jar

這個檔案可以直接使用解壓軟體開啟此檔案,如果想要使用此檔案,需要設定 classpath:set classpath = .;G:Javamy.jar

以上設定了兩個 classpath 目錄,一個是從當前所在的資料夾中查詢,另外一個就是剛壓縮好的*.jar 檔案

3、存取控制許可權

在 Java 中一共存在 4 種存取控制許可權,即 private,default,protected 和 public

private存取許可權

private屬於私有存取許可權,前面已經介紹過private存取許可權,可以用在屬性的定義、方法的宣告上,一旦使用了private關鍵字宣告,則只能在本類中進行存取。

default(預設)存取許可權

如果一個類中的屬性或方法沒有使用任何的存取許可權宣告,則就是預設的存取許可權,預設的存取許可權可以被本包中的其他類所存取,但是不能被其他包的類所存取。

protected存取許可權

protected屬於受保護的存取許可權。一個類中的成員如果使用了protected存取許可權,則只能被本包及不同包的子類存取。

範例:設定 protected 的存取許可權

package org.lxh.test;

public class HelloDemo{
    protected String name = "Java";//只能被本包及不同包的子類存取
}

存取受保護的屬性:

import org.lxh.test.HelloDemo;

class SubHelloDemo extends HelloDemo{
    public void print(){
        System.out.println("存取受保護屬性:" + super.name);//可以存取 protected 許可權
    }
}

public class root {
    public static void main(String[] args) {
        SubHelloDemo sub = new SubHelloDemo();//範例化子類物件
        sub.print();
    }
}

執行結果;

存取受保護屬性:Java

public存取許可權

public屬於公共存取許可權。如果一個類中的成員使用了public存取許可權,就可以在所有類中被存取,不管是否在同一個包中。

總結存取控制許可權:

4、Java命名規範

宣告類、方法、屬性等都是有一定的規範的,此規範如下。

  • 類:所有單詞的首字母大寫,如:JavaTest
  • 方法:第一個單詞的首字母小寫,之後每個單詞的首字母大寫,如 getInfo()
  • 屬性:第一個單詞的首字母小寫,之後每個單詞的首字母大寫,如 studentName
  • 包:所有單詞的字母小寫,如 org.lxh.demo
  • 常數:所有單詞的字母大寫,如 FLAG

到此這篇關於深入瞭解Java包與存取控制許可權的文章就介紹到這了,更多相關Java包 存取控制許可權內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com