當前位置:首頁 » 密碼管理 » javafriendly訪問許可權

javafriendly訪問許可權

發布時間: 2022-04-23 08:42:48

java中四種訪問許可權在同類體中,同一包中,不同包中的許可權范圍

1. public 表明該數據成員、成員函數是對所有用戶開放的,所有用戶都可以直接進行調用。

2. private 表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有財產神聖不可侵犯嘛,即便是子女,朋友,都不可以使用。

3. protected 對於子女、朋友來說,就是public 的,可以自由使用,沒有任何限制,而對於其他的外部class,protected就變成private 。

4. friendly修飾的類叫友元類,在另外一個類中使用友好類創建對象時,要保證它們在同一包中,就是說在一個包內的類互為友元類。

Ⅱ java中public用法

一.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中包訪問許可權private,protected,public和default的區別

public:可以被所有其他類所訪問

private:只能被自己訪問和修改

protected:自身、子類及同一個包中類可以訪問

default:同一包中的類可以訪問,聲明時沒有加修飾符,認為是friendly。

Ⅳ 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什麼時候使用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中的四種訪問控制域是什麼

private,public,protected,默認不寫(firendly)

1、Class類的訪問許可權:
public:可以供所有的類訪問。
默認:默認可以稱為friendly但是,java語言中是沒有friendly這個修飾符的,這樣稱呼應該是來源於c++。默認的訪問許可權是包級訪問許可權。
即如果寫了一個類沒有寫訪問許可權修飾符,那麼就是默認的訪問許可權,同一個包下的類都可以訪問到,即使可以實例化該類
(當然如果這個類不具有實例化的能力除外,比如該類沒有提供public的構造函數)。

說明:
1、每個編譯單元(類文件)都僅能有一個public class
2、public class的名稱(包含大小寫)必須和其類文件同名。
3、一個類文件(*.java)中可以不存在public class。
這種形式的存在的場景:如果我們在某個包內撰寫一個class,僅僅是為了配合同包內的其他類工作,而且
我們不想再為了撰寫說明文檔給客戶(不一定是現實意義的客戶,可能是調用這個類的類)看而傷腦筋,而且有可能過一段時間之後
有可能會徹底改變原有的做法,並完全舍棄舊版本,以全新的版本代替。
4、class不可以是private和protected。
5、如果不希望那個任何產生某個class的對象,可以將該類得所有構造函數設置成private。但是即使這樣也可以生成該類的對象,就是class的static的成員(屬性和方法)可以辦到。

2、類成員變數的訪問許可權:
public:緊接public的屬性任何類都可以訪問到。可以直接使用ClassName.propertyName。但是從類的封裝性上來考慮將一個類的屬性定義成public一般很少使用,
在定義靜態常量的時候通暢會這樣定義。如:public static final int PAGE_SIZE=10;
private:只有類本身內部的方法可以訪問類的private屬性,當然內部類也可以訪問其外部類的private成員的。(屬性和方法)
默認(friendly):包級可見,同一個包內的類可以訪問到這個屬性,可以直接使用className.propertyName來訪問,但是從類的封裝性特性來說很少這樣使用類的屬性的。
protected:關鍵字所處理的是所謂「繼承」的觀念。對於同一包的其他類,protected=默認,對於不同包的類,如果存在繼承關系,而baseClass存在protected屬性,則可以被其自繼承,而不同包的其他類
則不能訪問類的protected屬性。

3、類的成員方法的訪問許可權:
其從語法角度來講,這些訪問許可權控制符作用於類的方法和作用於類的屬性上的效果是一樣的。
public:所有類可見。
pirvate:只有同一類內部的方法可見,在有就是內部類也可以訪問到。
默認(friendly):包內可見。
protected:繼承可見。

4、訪問許可權存在的理由
1、「讓使用者無法碰觸到他們不該碰觸的東西。」這些東西僅供類的內部機制使用。將某些成員聲明成private,對於使用者來說可以說是一種服務,
因為這樣使用者可以知道哪些是他關注的哪些是不重要的,不需要關注,如此歷來對於使用來說降低了對使用對象認識的難度。
2、(最終要的理由)讓程序設計者可以更動class內部運作方式,而無須擔心波及到客戶端程序。

5、java的「訪問許可權修飾符」賦予classes開發者極具有價值的控制能力。身為classes開發者,如果你的任何改變可以完全不幹擾你的使用者,
你便可以安心改變你的底層實現,因為客戶端程序員無法訪問class的這一部分。
通過今天學習訪問許可權的問題了解到,介面或者抽象等等策略所謂的「實現隱藏」其根本原因並不是說為了隱藏實現的代碼和思路,而是降低使用者的使用難度,以及從維護角度來說可見范圍的控制給程序維護帶來了極大的安全性。

Ⅶ 弱弱的問下,java里什麼情況下用public,什麼情況下用private

一.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 2,protected 3,(default) 4,private

1任何類都可以訪問
2在同一個包中的所有類可以訪問,以及該類的子類
3同一個包中的所有類
4隻能在本類中訪問

Ⅸ 沒有public修飾的java類,其訪問許可權是包級訪問許可權還是同一文件下的訪問許可權

沒有public修飾的java類,在不同的包中是無法訪問的。
對類的修飾符有4種:public 、protected、空白(即不寫修飾符)和private。具體的訪問規則為:同一個類中均可訪問;同一個包中,private修飾的不可訪問,其餘三種可以訪問;子類中,public和protected修飾的類可以訪問;不同包中只有public修飾的類可以被訪問。

Ⅹ java 中的修飾符有那幾個,它們的訪問許可權的范圍是多少

java中的修飾符分為類修飾符,欄位修飾符,方法修飾符。根據功能的不同,主要分為以下幾種。
1、許可權訪問修飾符
public,protected,default,private,這四種級別的修飾符都可以用來修飾類、方法和欄位。

包外 子類 包內 類內
public yes yes yes yes
protected no yes yes yes
default no no yes yes
private no no no yes

2、final修飾符
final的意思是不可變,他可以修飾類、欄位、方法。修飾類後類不能被擴展(extends),也就是不能被繼承。修飾欄位後欄位的值不能被改變,因此如果有final修飾欄位,應該對欄位進行手動初始化。修飾方法後該方法不能被改變,也就是重寫。
3、abstract修飾符
abstract是抽象的意思,用來修飾類和方法,修飾類後,該類為抽象類,不能被實例化,必需進行擴展。修飾方法後,該方法為抽象方法必須被子類重寫(override)。
4、static修飾符
static用來修飾內部類,方法,欄位。修飾內部類說明該內部類屬於外部類而不屬於外部類的某個實例。修飾欄位說明該欄位屬於類而不屬於類實例。修飾方法說明該方法屬於類而不屬於類實例。

熱點內容
雲盤視頻解壓密碼 發布:2024-05-19 15:23:17 瀏覽:848
和平精英怎麼改地區位置安卓 發布:2024-05-19 15:19:05 瀏覽:286
酒店的路由器如何配置 發布:2024-05-19 15:10:44 瀏覽:500
rpgmaker腳本 發布:2024-05-19 14:48:58 瀏覽:407
hds存儲虛擬化 發布:2024-05-19 14:47:09 瀏覽:21
mysql資料庫分片 發布:2024-05-19 14:42:30 瀏覽:342
2021款魏派vv6買哪個配置 發布:2024-05-19 14:31:11 瀏覽:633
前端如何打開第二個伺服器地址 發布:2024-05-19 14:30:55 瀏覽:570
新建文件夾2百度盤 發布:2024-05-19 14:24:07 瀏覽:608
waslinux安裝部署 發布:2024-05-19 14:23:11 瀏覽:787