java中的許可權
㈠ java如何做許可權管理
思路:
1、用戶表 user;
2、角色表 role;
3、菜單 menu;
4、角色菜單許可權表 role_menu;
5、用戶菜單許可權表 user_menu;
㈡ java如何設置文件的許可權
在Java中,文件許可權是非常具體的操作系統:* nix中,NTFS(Windows)及FAT/FAT32,都有著別樣的文件許可權。 Java提供了一些通用的文件許可權來處理它。
檢查文件許可權允許:
1.file.canExecute(); – 返回true,文件是可執行的,false 則不是。
2.file.canWrite(); – 返回true,文件是可寫的,false 則不是。
3.file.canRead(); – 返回true,文件是可讀的,false 則不是。
設置文件許可權:
1.file.setExecutable(boolean); – true允許執行操作; false則是禁止它。
2.file.setReadable(boolean); – true允許讀操作; false則是禁止它。
3.file.setWritable(boolean); – true允許寫操作; false則是禁止它。
在* nix的系統中,可能需要配置有關文件許可權的詳細指定,例如設置777許可權的文件或目錄,但是,Java的IO類沒有現成的方法,但你可以使用下面的解決方法:
Runtime.getRuntime().exec("chmod 777 file");文件許可權的例子
import java.io.File;
import java.io.IOException;
/×
×只能給當前用戶賦予對該文件的許可權,調用createNewFile()方法默認的許可權是644.
×/
public class FilePermission
{
public static void main( String[] args )
{
try {
File file = new File("/home/test3.txt");
if (file.createNewFile()){
System.out.println("File is created!");
//Runtime.getRuntime().exec("chmod 777 /home/test3.txt");
file.setExecutable(true);//設置可執行許可權
file.setReadable(true);//設置可讀許可權
file.setWritable(true);//設置可寫許可權
System.out.println("is execute allow : " + file.canExecute());
System.out.println("is read allow : " + file.canRead());
System.out.println("is write allow : " + file.canWrite());
}else{
System.out.println("File already exists.");
}
} catch (IOException e) {
e.printStackTrace();
}
}
㈢ java訪問許可權是什麼
1、private修飾詞,表示成員是私有的,只有自身可以訪問;
2、protected,表示受保護許可權,體現在繼承,即子類可以訪問父類受保護成員,同時相同包內的其他類也可以訪問protected成員。
3、無修飾詞(默認),表示包訪問許可權(friendly, java語言中是沒有friendly這個修飾符的,這樣稱呼應該是來源於c++ ),同一個包內可以訪問,訪問許可權是包級訪問許可權;
4、public修飾詞,表示成員是公開的,所有其他類都可以訪問;
5、類的訪問限制,僅有public和包訪問許可權;
a、一個Java文件只能有一個public類
b、public類的名稱必須同Java文件名完全一致
c、若Java文件中沒有public類,則文件名可以任意
6、final關鍵字
a、final數據成員,使用前總是被初始化並被強制要求在定義處或構造器中賦值;一旦賦值後,對於基本類型其值會恆定不變,而對於對象引用會始終指向賦值的對象,但指向對象自身是可以修改的;
b、final參數,對於基本類型表示無法改變參數的值,對於對象引用表示無法改變引用所指的對象;
c、final方法,保證方法不會在繼承後修改和重載;所有的private方法都隱含式final的;Java中使用動態綁定(後期綁定)實現多態,除了static和final方法是使用前期綁定的;
d、final類,表示該類不可被繼承。
㈣ 什麼是Java類的訪問許可權
在解釋訪問許可權控制之前,先看一個場景。在學生信息管理系統中,有兩個類,分別是學生類和課程類,課程類提供了課程表和課程安排兩個方法,學生類可以調用課程類提供的課程表查看課程安排,但不能調用課程安排方法,該如何處理,此時就可以利用訪問許可權來進行控制。
在Java中,提供了四種訪問許可權控制:默認訪問許可權(包訪問許可權),public,private以及protected。
默認訪問許可權(default):即不加任何訪問修飾符,通常稱為「默認訪問模式「。該模式下,只允許在同一個包中進行訪問。
private: 對訪問許可權限制的最窄的修飾符,一般稱之為「私有的」。被其修飾的類、屬性以及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。
protect: 介於public 和 private 之間的一種訪問修飾符,一般稱之為「保護的」。被其修飾的類、屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
public: Java語言中訪問限制最寬的修飾符,一般稱之為「公共的」。被其修飾的類、屬性以及方法不僅可以跨類訪問,而且允許跨包(package)訪問。下表列出了四種訪問許可權的控制粒度:
packagecom.cxh.test1;
classPeople{//默認訪問許可權(包訪問許可權)
privateStringname=null;
publicPeople(Stringname)
{
this.name=name;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname)
{
this.name=name;
}
}
從代碼可以看出,修飾People類採用的是默認訪問許可權,而由於People類和Main類在同一個包中,因此People類對於Main類是可見的。
㈤ java什麼時候使用private public protect static
一.Java訪問許可權飾詞(access specifiers)
Java有public、protect、friendly、private四種訪問許可權,並且這四訪問許可權的訪問范圍越來越小。
1. friendly
1) 果一個class內的數據成員或方法沒有任何許可權飾詞,那麼它的預設訪問許可權就是friendly。同一個package內的其它所有classes都可以訪問friendly成員,但對package以外的classes則形同private。
2)對於同一個文件夾下的、沒有用package的classes,Java會自動將這些classes初見為隸屬於該目錄的default package,可以相互調用class中的friendly成員。如以下兩個class分別在同一個文件夾的兩個文件中,雖然沒有引入package, 但隸屬於相同的default package。
class Sundae{
//以下兩個方法預設為friendly
Sundae(){}
Void f() {System.out.println(「Sundae.f()」);
}
public class IceCream{
public static void main(String[] args){
Sundae x = new Sundae();
x.f();
}
}
2. public:可以被任何class調用
3. private:private成員只能在成員所屬的class內被調用,如:
class Sundae{
private Sundae(){}//只能在Sundae class中被調用
Sundae(int i) {}
static Sundae makASundae() {
return new Sundae();
}
}
public class IceCream{
public static void main(String[] args){
// Sundae class中構造函數Sundae()是private,
// 所以不能用它進行初始化
//Sundae x = new Sundae();
Sundae y = new Sundae(1);//Sundae(int)是friendly,可以在此調用
Sundae z = Sundae.makASundae();
}
}
4. protected:具有friendly訪問許可權的同時,又能被subclass(當然包括子孫類,即子類的子類)所訪問。即,既能被同一package中的classes訪問,又能被protected成員所在class的subclass訪問。
二.Class的訪問許可權
1.Class同樣具有public、protect、friendly、private四種訪問訪問許可權:
1)public:在任何地方都可被使用
2)protect、private:除了它自己,沒有任何class可以使用,所以class不能是
protected或private(inner class除外)
3) friendly:同一個package中的classes能用
2. 如何調用構造函數被聲明為private的class
1) 用static函數
2) 用Singteton模式
class Soup{
private Soup(){}
//(1)靜態函數方法
public static Soup makeSout(){
return new Soup();
}
//(2)The "Singleton" pattern:
private static Soup ps1 = new Soup();
public static Soup access(){
return ps1;
}
public void f(String msg){
System.out.println("f(" + msg + ")");
}
}
public class Lunch{
public static void main(String[] args){
//Soup priv1 = new Soup();編譯錯誤
Soup priv2 = Soup.makeSout();
Soup priv3 = Soup.access();
priv2.f("priv2");
priv3.f("priv3");
}
㈥ Java中目前學習涉及到的四種許可權修飾符都有什麼並說明各自的許可權范圍
(1)public : 公共許可權
修飾對象: 修飾類、方法、屬性
繼承: 被public所修飾的成員能被該類的所有子類繼承下來。
作用域: 可以被任意類訪問
public能用來修飾類,在一個java源文件中只能有一個類被聲明為public,而且一旦有一個類為public,那這個java源文件的文件名就必須要和這個被public所修飾的類的類名相同,否則編譯不能通過。說到這里,穿插多一點知識。一個類作為外部類的時候只能被public或者默認訪問修飾符所修飾,但是一個類如果作為內部類的時候,則可以被四種訪問修飾符所修飾,因為一個類作為內部類的時候,就作為外部類的一個成員屬性了,因此可以有四種訪問修飾符修飾,這是內部類和外部類的一個區別。
public用來修飾類中成員(變數和方法),被public所修飾的成員可以在任何類中都能被訪問到。通過操作該類的對象能隨意訪問public成員。
public在類的繼承上的體現,被public所修飾的成員能被所有的子類繼承下來。
(2)protected:受保護的許可權
修飾對象:修飾內部類,介面,屬性,方法
繼承: 被protected所修飾的成員能被該類的所有子類繼承下來。
作用域: 可以被同包類訪問,如果不是同包,必須是該類的子類才能訪問
(3)default : 同包許可權(默認,預設的)
修飾對象:修飾類,屬性,方法。
繼承:被default所修飾的成員只能被該類所在同一個package中的子類所繼承下來。(也就是說只有在同一個package中的子類才能訪問到父類中default修飾的成員)
作用域: 只能被同包的類訪問
(4) private : 私有許可權
修飾對象 : 內部類,屬性,方法
作用域: 只能在本類中使用
注意:
(1)protected不能修飾類。
(2)priavte可以修飾類,但是該類必須是一個內部類。
在定義類時,推薦訪問控制級別從嚴處理:
(1) 如果不允許外部直接通過 new 創建對象,構造方法必須是 private。
(2)工具類不允許有 public 或 default 構造方法。
(3)類非 static 成員變數並且與子類共享,必須是 protected。
(4)類非static成員變數並且僅在本類使用,必須是private。
(5)類 static 成員變數如果僅在本類使用,必須是 private。
(6)若是 static 成員變數,必須考慮是否為 final。
(7)類成員方法只供類內部調用,必須是 private。
(8)類成員方法只對繼承類公開,那麼限制為 protected。
㈦ Java訪問控制許可權有哪些
java中成員的訪問許可權共有四種,其中三種有訪問許可權修飾詞:public,protected,private。
Public:許可權最大,允許所有類訪問,但其他包下的類想要訪問需使用import關鍵字將這些public類導入包中才可使用,換句話說,import將不同包的類導入到一個包下,從而轉化為包訪問許可權下的情況。
Protected:除了提供包訪問許可權以外,還對繼承該類的所有派生類賦予訪問許可權。
Private:許可權最小,只能由包含該成員(域和方法)的類本身訪問,其他任何類都無法訪問。
不使用這三個關鍵詞時,則提供默認包訪問許可權,該許可權只允許同一個包下(即同一個目錄下的Java文件)的類訪問該類。
注意:private和protected只能修飾成員,無法修飾類。類要麼是public的,要麼是包訪問許可權。
㈧ java中四種訪問許可權在同類體中,同一包中,不同包中的許可權范圍
1. public 表明該數據成員、成員函數是對所有用戶開放的,所有用戶都可以直接進行調用。
2. private 表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。
3. protected 對於子女、朋友來說,就是public 的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private 。
4. friendly修飾的類叫友元類,在另外一個類中使用友好類創建對象時,要保證它們在同一包中,就是說在一個包內的類互為友元類。