深入了解Java包與訪問控制權限
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());
}
}此時編譯時需要加上相應參數(shù):javac -d.Test.java
-d :表示生成目錄,生成的目錄以 package 的定義為準 . : 表示在當前所在文件夾中生成
執(zhí)行完以上命令后,會自動生成相應的文件夾(包),之后再執(zhí)行類時就必須輸入完整的“包.類名稱”
(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)系統(tǒng)常見包
在JDK中為了方便用戶開發(fā)程序,提供了大量的系統(tǒng)功能包,如下圖所示:


java.util包在開發(fā)中使用較多,因為其支持大量的工具類操作,像本書中的常用類庫、 Java 類集都是圍繞此包展開講解的。
java.lang.reflect這個包一般在面試時有可能會問到,此包屬于比較高級的開發(fā)包。
(4)Java 新特性 – 靜態(tài)導入
如果一個類中的方法全部是使用static聲明的靜態(tài)方法,則在導入時就可以直接使用 import static 的方式導入:
import static 包.類.*
范例:定義一個類,全部由靜態(tài)方法組成
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;
}
}使用靜態(tài)導入:
import static org.lxh.test.Demo1.*;//靜態(tài)導入
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));
}
}由于程序中使用了靜態(tài)導入,所以Demo1 類中的所有靜態(tài)方法可以直接在 Test 類中使用,而 不需要使用 “類.靜態(tài)方法()” 的形式使用。
2、jar命令的使用
當開發(fā)者為客戶開發(fā)出了一套 Java 類之后,肯定要把這些類交給用戶使用,但是如果所有的類直接通過 *.class 的格式給用戶,會比較麻煩,所以一般情況下會將這些 *.class 文件壓縮車一個文件交付給客戶使用,那么這樣的文件就稱為 jar 文件(Java Archive File)。
如果要想生成 jar 文件,直接使用 JDK 中 bin 目錄里的 jar.exe 就可以將所有的類文件進行壓縮,此命令是隨 JDK 一起安裝的,直接在命令行中輸入 jar,即可看到此命令的提示界面:

當用戶得到一個 jar 文件后,可以通過設置 classpath 的方式在系統(tǒng)中注冊號此 jar 文件,以供程序使用。
jar 命令主要使用的參數(shù)如下:
C:創(chuàng)建新的文檔
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:\Java\my.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命名規(guī)范
聲明類、方法、屬性等都是有一定的規(guī)范的,此規(guī)范如下。
- 類:所有單詞的首字母大寫,如:JavaTest
- 方法:第一個單詞的首字母小寫,之后每個單詞的首字母大寫,如 getInfo()
- 屬性:第一個單詞的首字母小寫,之后每個單詞的首字母大寫,如 studentName
- 包:所有單詞的字母小寫,如 org.lxh.demo
- 常量:所有單詞的字母大寫,如 FLAG
到此這篇關于深入了解Java包與訪問控制權限的文章就介紹到這了,更多相關Java包 訪問控制權限內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
springboot讀取application.yml報錯問題及解決
這篇文章主要介紹了springboot讀取application.yml報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
Python連接Java Socket服務端的實現(xiàn)方法
這篇文章主要介紹了Python連接Java Socket服務端的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-01-01
Java中Socket實現(xiàn)數(shù)據通信的示例代碼
本文主要介紹了Java中Socket實現(xiàn)數(shù)據通信的示例代碼,Socket可以建立起客戶端和服務器之間的連接,實現(xiàn)數(shù)據的傳輸和交互,感興趣的可以了解一下2023-09-09
java?Springboot實現(xiàn)教務管理系統(tǒng)
這篇文章主要介紹了java?Springboot實現(xiàn)教務管理系統(tǒng)的過程,文章圍繞實現(xiàn)過程展開全文詳細內容,具有一定的參考價值,需要的朋友可以參考一下,希望對你有所幫助2021-11-11

