java默認的訪問修飾符
A. java默認方法的修飾符是什麼
默認什麼都不加,就是default(不用把default寫出來)。
意思就是只能由跟這個類在同一個包中的類來訪問,比private限制更少,但比protected限制更多。'
Java訪問修飾符包括private,default,protected和public。含義分別表示私有的,默認的,受保護的和公有的訪問修飾符。這些訪問修飾符既可以修飾類中的屬性,又可以修飾類中的方法,而public和default還可以修飾類。在同一個java文件里,公有類有且僅有一個,並且該文件命名為類名.java。
Java訪問修飾符就是確定類中屬性或方法的訪問許可權,換句話說,就是這些屬性和方法所起的作用范圍。
private,私有的訪問許可權,也是最嚴格的訪問許可權,僅只能在設置了該許可權的類中訪問,利用這個訪問許可權,表現出封裝思想。
default,默認的訪問許可權,也是可以省略的訪問許可權,它不僅能在設置了該許可權的類中訪問,也可以在同一包中的類或子類中訪問。
protected,受保護的訪問許可權,它除了具有default的訪問許可權外,還可以在不同包中所繼承的子類訪問。
public,公有的訪問許可權,也是最寬松的訪問許可權,不僅可以是同一個類或子類,還是同一個包中的類或子類,又還是不同包中的類或子類,都可以訪問。
要想更深入地理解這些訪問許可權,一方面需要明白各自的作用域,另一方面更是要弄清楚各自所體現出來的編程思想,比方說,prvite表現的封裝思想,public表現的面向介面編程的思想等。
在面向對象設計和編程的過程中,歸根結底就是類的設計。而要設計出不僅滿足當前需求同時也能符合未來需求的類,就很有必要對類中屬性和行為設置合適的訪問
許可權。那些應該為私有的,那些又應該為公有的,還有那些又應該為受保護的等,都應該給予合理的規劃和布局,一來保證程序的功能要求,二來要體現程序的擴展
性能,三來要呈現程序友好性質。總之,程序應該更好地服務用戶。而訪問許可權在這樣宏偉目標里扮演著重要角色。
B. Java的類,方法,變數等等的默認修飾符是什麼
我明白你的意思~但是你問的不是很恰當,方法沒有默認的修飾符。
先看看我的解釋吧。
修飾符有public、protected、private,當然還有預設的(default)修飾符,預設的就是方法名前無任何修飾符。
預設的(也就是你認為的默認修飾符)修飾符的訪問許可權都不同於public、protected、private所修飾的方法。所以訪問許可權其實有四種。
下面是他們四個訪問許可權的關系。
我是拿類的方法來舉例:
================================================
C. java 的訪問修飾符是什麼
Java中的訪問修飾符
Java面向對象的基本思想之一是封裝細節並且公開介面。Java語言採用訪問控制修飾符來控制類及類的方法和變數的訪問許可權,從而向使用者暴露介面,但隱藏實現細節。訪問控制分為四種級別:
(1)public: 用public修飾的類、類屬變數及方法,包內及包外的任何類(包括子類和普通類)均可以訪問;
(2)protected: 用protected修飾的類、類屬變數及方法,包內的任何類及包外那些繼承了該類的子類才能訪問(此處稍後解釋),protected重點突出繼承;
(3)default: 如果一個類、類屬變數及方法沒有用任何修飾符(即沒有用public、protected及private中任何一種修飾),則其訪問許可權為default(默認訪問許可權)。默
認訪問許可權的類、類屬變數及方法,包內的任何類(包括繼承了此類的子類)都可以訪問它,而對於包外的任何類都不能訪問它(包括包外繼承了此類的子類)。default重點突出包;
(4)private: 用private修飾的類、類屬變數及方法,只有本類可以訪問,而包內包外的任何類均不能訪問它。
網上一些資料及一些書上用表格對java訪問修飾符做了清楚的總結,如下表所示:
重要總結:通過上面的分析,我們可以看到:
1.public、private和protected對我們來說沒有任何異議。
2. 頂層類只能用public訪問修飾符和default(默認)訪問修飾符修飾,其中用默認修飾符修飾的類(及沒有任何修飾符的類,如class B{})不能被其他包中的類繼承,這也說明了default(默認)訪問修飾符突出的是包許可權
3. protected:本人做了一次實驗,發現在不同包的子類中,new一個父類對象,並用該父類對象去訪問父類中的用protected修飾的類屬變數和方法時不能訪問,而new一個子類對象時,子類對象可以訪問(說明protected修飾的類可以被其他包中的類繼承)。也可以在子類重寫父類的方法中使用super關鍵字調用。這豈不是和上面表格中的總結(紅色對勾)沖突了?本人也是百思不得其解。最後在網上找到了一個相對比較認可的解釋,如下:
protected修飾符的修飾的成員變數和方法也稱為受保護的成員變數和方法, 受保護的成員變數和方法可以在本類或同一個包中的其它類(包括子類)中通過類的實例進行訪問,也可以被同一個包中的類或不同包中的類繼承,但是不能在不同包中的其它類(包括子類)中通過類的實例進行訪問。
4. 如果一個類使用public修飾,那該類的類名必須與他所在的源文件名相同。一個.java源文件中有且只有一個public類,頂層類只能用public和默認修飾符(即無修飾符)修飾;
5.final修飾的類不能被繼承,沒有子類。
6.abstract修飾的類不能被實例化,必須被子類繼承。類只要有一個抽象方法就必定是抽象類,但抽象類不一定要有抽象方法。
最終總結,就一句話:protected修飾符所修飾的類(這句話中指父類)屬成員變數和方法,只可以被子類訪問,而不管子類是不是和父類位於同一個包中。default修飾符所修飾的類屬成員變數和方法,只可被同一個包中的其他類訪問,而不管其他類是不是該類的子類。protected屬於子類限制修飾符,而default屬於包限制修飾符。
D. java三個類組合怎麼運行
一、java類里的欄位默認的訪問修飾符是default,對需要保護的成員變數需要用private關鍵字修飾。
二、類的構造方法格式:
public 類名(參數列表)
{函數體}
三、API(Application Program Interface,應用程序編程介面)
1.使用方法:
(1)導包
import 包路徑.類名稱;
如果需要使用的目標類,和當前類位於同一個包下,則可以省略導包語句不寫。
java.lang包下的內容不用導包,其他的包都需要import語句。
(2)創建
類名稱 對象名 = new 類名稱();
(3)使用
對象名.成員方法名();
(1)Scanner類:用於鍵盤輸入數據到程序中。
Scanner sc = new Scanner(System.in);
獲取鍵盤輸入的一個int數字,int sum = sc.nextInt();
獲取鍵盤輸入的一個字元串,String str = sc.next();
下例中的運行結果綠色的行是客戶端輸入並按回車鍵,而黑色字體是程序輸出的。
E. java介面里的變數不寫訪問修飾符默認的是什麼修飾符
介面裡面默認的是public abstract。
也正因為默認就是public abstract,所以一般建議就是在介面內直接寫方法:
void(根據返回值類型設置啊) 方法名 ();
void methodname ();
F. java四種許可權修飾符
java有四種訪問許可權修飾符,分別是:public、protected、private和包訪問(即默認,什麼都不加)。
private,只有本類可以訪問。
protected,本類、相同包、其它包中的子類可以訪問。
public本類、相同包、其它包都能訪問。
包訪問(默認),相同包可以訪問。
G. java中類成員的訪問修飾符有哪些
一:訪問修飾符:
1.省略訪問修飾符
具有默認的訪問特性,即具有包訪問特性,只能被同一個包中的類使用。
2.public訪問修飾符
用於說明類和類的成員的訪問許可權。這種類叫公有類。在一個文件中只能有一個public類型的類。
例如:Rect和UseImport兩個類,分別在兩個不同的包中。順便回顧一下不同類要用import導入。(哎,一直就沒記住)
//Rect.java
pacakage
my;
public
class
Rect
{
private
int
a,b;
public
void
init(int
len,int
width)
{
a=len;
b=width;
}
public
int
area()
{
return
a*b;
}
}
//UseImport.java
import.my.*;//導入my
包的所有類
public
class
UseImport
{
public
static
void
main(string[]
args)
{
Rect
x=new
Rect();
x.init(2,3);
System.out.println("矩形面積為:"+x.area());
}
}
3.private
用private修飾的類成員成為私有成員,只能在聲明該成員的類中使用,不能在類外使用。一般通過本類中公有方法進行訪問。
4.protected
protected修飾的類成員為保護成員,可以被三種類使用,分別是該類本身,該類的所有子類,該類同包的其他類,該類的子類。
5.private
protected
私有保護成員。可被兩種類使用。分別是:該類本身和該類的所有子類。
二:特徵修飾符
1.abstract:抽象
修飾類為抽象類,修飾方法為抽象方法。只要類中有抽象方法,就必須定義為抽象類。抽象方法只能聲明,不能實現。但是可以在其子類中對抽象方法進行實現。抽象類中也可以包含非抽象方法。
2.final:最終
修飾的類為終止類,不能有子類。修飾變數為終止變數,只可賦值一次。修飾方法為終止方法,不能在子類中更改。如Socket、ServerSocket等都是final類,防止黑客派生子類進行破壞。同時,final與abstract是相互矛盾的。
3.static:靜態
靜態成員無需通過對象調用,可以直接通過類名直接調用。
public
class
RectArea//輸出6
和
12
{
public
static
void
main(String[]
args)
{
System.out.println(area(2,3));
System.out.println(area(3,4));
}
static
void
area(int
a,int
b)
{
return
a*b;
}
}
4.native
用native修飾的為本地方法。它修飾的方法在程序外部使用其他編程語言編寫。(這個步驟比較多,所以就木有繼續研究了)
5.synchronized
修飾的方法為同步方法。
H. 在Java和c#中如果不寫訪問修飾符,類和類成員默認的是什麼訪問修飾符
省略類的訪問修飾符,默認為internal
省略類成員的訪問修飾符,默認為private
I. java中默認的修飾符到底是friendly,還是default
默認是default。
沒有friendly,只有public、private、protected、default。
默認什麼都不加,就是default(不用把default寫出來)。
意思就是只能由跟這個類在同一個包中的類來訪問,比private限制更少,但比protected限制更多。'
J. Java中public,private,protected,和默認的區別
1、private修飾詞,表示成員是私有的,只有自身可以訪問; x0dx0a2、protected,表示受保護許可權,體現在繼承,即子類可以訪問父類受保護成員,同時相同包內的其他類也可以訪問protected成員。 x0dx0a3、無修飾詞(默認),表示包訪問許可權(friendly, java語言中是沒有friendly這個修飾符的,這樣稱呼應該是來源於c++ ),同一個包內可以訪問,訪問許可權是包級訪問許可權; x0dx0a4、public修飾詞,表示成員是公開的,所有其他類都可以訪問;