類的訪問修飾符是
㈠ C#中類的默認訪問修飾符是什麼,是Private嗎
這個要看類的位置,
如果類,結構,代理,枚舉是外置的,那修飾符只有:public 和 internal,默認是internal。
至於private和protected是用來修飾類的成員。
在外置class前面加private,protected根本不會通過編譯,不信你試試?
如果是內置的,就是作為另一個類型的成員,也稱內部類型(inner type),這樣的話,修飾符可以是全部可用修飾符,默認是private。
舉例:
class a {} 類a是internal
class b
{
class a {} 類a是private
}
㈡ C#定義類的訪問修飾符是指什麼意思
C# 共有五種訪問修飾符:public、private、protected、internal、protected internal。作用范圍如下表:
所以對於 class A 來說,protected 表示其本類(class Program)和子類(所有繼承 classProgram 的類)可以訪問;對於 class B 來說也一樣。
㈢ 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屬於包限制修飾符。
㈣ 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
修飾的方法為同步方法。
㈤ java中類的訪問許可權修飾符有哪兩種求答案
不止兩種,public,protcet,private,沒有修飾符是默認訪問許可權
pravite 只能在同一個類中訪問protected,可以在同一個類、同一個包、不同包中的子類訪問默認:在同一個類、同一個包中訪問public 同一個類,同一個包、不同包中的子類、不同包中的非子類
㈥ c#類的修飾符有哪些
修飾符用於限定類型以及類型成員的申明,C#中的修飾符按功能可分為四部分:屬性修飾符,存取修飾符,類修飾符和成員修飾符。
屬性修飾符:
[Serializable]:按值將對象封送到遠程伺服器。在按值封送對象時,就會創建一個該對象的副本,並將其序列化傳送到伺服器。 任何對該對象的方法調用都是在伺服器上進行的。
[STAThread]:是Single-Threaded Apartment單線程套間的意思,是一種線程模型(線程模式用於處理組件在多線程的環境里並行與並互的方式),套間線程(STAThread)模式中介面跨線程傳遞必須被調度(Marshal),不調度直傳肯定會失敗!而MTA或FreeThread模式中的介面可以不經調度直接傳遞。這種調度在特定的環境中非常影響性能(可有幾百倍之差)。如VB里只支持STAThread模式。FreeThread模式的組件會在裡面表現成和跨進程一樣慢!線程模式是微軟的COM基礎中的極其重要的概念。一定要吃透!
[MTAThread]:是MultiThreaded Apartment多線程套間的意思,同上也是一種線程模型。
存取修飾符:
public:存取不受限制。
private:只有包含該成員的類可以存取。
internal:只有當前工程可以存取。
protected:只有包含該成員的類以及派生類可以存取。
類修飾符:
abstract:抽象類。指示一個類只能作為其它類的基類。
sealed:密封類。指示一個類不能被繼承。理所當然,密封類不能同時又是抽象類,因為抽象總是希望被繼承的。
成員修飾符:
abstract:指示該方法或屬性沒有實現。
sealed:密封方法。可以防止在派生類中對該方法的override(重載)。不是類的每個成員方法都可以作為密封方法密封方法,必須對基類的虛方法進行重載,提供具體的實現方法。所以,在方法的聲明中,sealed修飾符總是和override修飾符同時使用。
delegate:委託。用來定義一個函數指針。C#中的事件驅動是基於delegate + event的。
const:指定該成員的值只讀不允許修改。
event:聲明一個事件。
extern:指示方法在外部實現。
override:重寫。對由基類繼承成員的新實現。
readonly:指示一個域只能在聲明時以及相同類的內部被賦值。
static:指示一個成員屬於類型本身,而不是屬於特定的對象。即在定義後可不經實例化,就可使用。
virtual:指示一個方法或存取器的實現可以在繼承類中被覆蓋。
new:在派生類中隱藏指定的基類成員,從而實現重寫的功能。 若要隱藏繼承類的成員,請使用相同名稱在派生類中聲明該成員,並用 new 修飾符修飾它。
㈦ 訪問修飾符public,private,protected,以及不寫(默認)時的區別
類的成員不寫訪問修飾時默認為default。
默認對於同一個包中的其他類相當於公開(public),對於不是同一個包中的其他類相當於私有(private)。受保護(protected)對子類相當於公開,對不是同一包中的沒有父子關系的類相當於私有。
作用域
當前類
同包
子類
其他
public
√
√
√
√
protected
√
√
√
×
default
√
√
×
×
private
√
×
×
×
希望可以幫到你,望採納~
㈧ c#類的修飾符有哪些
以下是我以前收集的修飾符詳解,現在你需要就給分享下,希望對你也有幫助
1、訪問修飾符、
指定聲明的類型和類型成員的可訪問性。
(1)public:是類型和類型成員的訪問修飾符。公共訪問是允許的最高訪問級別。對訪問公共成員沒有限制。
(2) private:是一個成員訪問修飾符。私有訪問是允許的最低訪問級別。私有成員只有在聲明它們的類和結構體中才是可訪問的。
(3) internal:是類型和類型成員的訪問修飾符。只有在同一程序集的文件中,內部類型或成員才是可訪問的。
(4)protected:是一個成員訪問修飾符。受保護成員在它的類中可訪問並且可由派生類訪問。
2、abstract:指示某個類只能是其他類的基類。
可以和類、方法、屬性、索引器及事件一起使用。在類聲明中使用abstract修飾符以指示某個類只能是其他類的基類。標記為抽象或包含在抽象類中的成員必須通過從抽象類派生的類來實現。
3、const:指定無法修改欄位或局部變數的值。用於修改欄位或局部變數的聲明。它指定欄位或局部變數的值是常數,不能被修改。
4、event:聲明事件。類和結構使用事件將出現的可能影響對象狀態的事件通知給對象。
5、extern:指示在外部實現方法。用於聲明在外部實現的方法。extern修飾符的常見用法是在使用Interop 服務調入非託管代碼時與DllImport屬性一起使用;在這種情況下,該方法還必須聲明為static。extern關鍵字還可以定義外部程序集別名,使得可以從單個程序集中引用同一組件的不同版本。將abstract和extern修飾符一起使用來修改同一成員是錯誤的。使用extern修飾符意味著方法在C# 代碼的外部實現,而使用abstract修飾符意味著在類中未提供方法實現。6、new:從基類成員隱藏繼承的成員。
在用作修飾符時,new關鍵字可以顯式隱藏從基類繼承的成員。隱藏繼承的成員意味著該成員的派生版本將替換基類版本。在不使用new修飾符的情況下隱藏成員是允許的,但會生成警告。使用new顯式隱藏成員會取消此警告,並記錄代之以派生版本這一事實。若要隱藏繼承的成員,請使用相同名稱在派生類中聲明該成員,並使用new修飾符修飾該成員。對同一成員同時使用new和override是錯誤的,因為這兩個修飾符在含義上相互排斥。使用new會用同樣的名稱創建一個新成員並使原始成員變為隱藏的,而override則擴展繼承成員的實現。在不隱藏繼承成員的聲明中使用new修飾符將會生成警告。
7、override:提供從基類繼承的虛擬成員的新實現。要擴展或修改繼承的方法、屬性、索引器或事件的抽象實現或虛實現,必須使用override修飾符。
8、partial:在整個同一程序集中定義分部類和結構。分部類型定義允許將類、結構或介面的定義拆分到多個文件中。
9、readonly:聲明一個欄位,該欄位只能賦值為該聲明的一部分或者在同一個類的構造函數中。是可以在欄位上使用的修飾符。當欄位聲明包括readonly修飾符時,該聲明引入的欄位賦值只能作為聲明的一部分出現,或者出現在同一類的構造函數中。在此示例中,欄位year的值無法在ChangeYear方法中更改,即使在類構造函數中給它賦了值。
10、sealed:指定類不能被繼承。可以應用於類、實例方法和屬性。密封類不能被繼承。密封方法會重寫基類中的方法,但其本身不能在任何派生類中進一步重寫。當應用於方法或屬性時,sealed修飾符必須始終與override一起使用。在類聲明中使用sealed修飾符可防止繼承此類
11、static:聲明屬於類型本身而不是屬於特定對象的成員。聲明屬於類型本身而不是屬於特定對象的靜態成員。可用於類、欄位、方法、屬性、運算符、事件和構造函數,但不能用於索引器、析構函數或類以外的類型。
12、unsafe:聲明不安全的上下文。該上下文是任何涉及指針的操作所必需的。
13、virtual:在派生類中聲明其實現可由重寫成員更改的方法或訪問器。用於修飾方法、屬性、索引器或事件聲明,並且允許在派生類中重寫這些對象。調用虛方法時,將為重寫成員檢查該對象的運行時類型。將調用大部分派生類中的該重寫成員,如果沒有派生類重寫該成員,則它可能是原始成員。默認情況下,方法是非虛擬的。不能重寫非虛方法。virtual修飾符不能與static、abstract和override修飾符一起使用。除了聲明和調用語法不同外,虛擬屬性的行為與抽象方法一樣。·在靜態屬性上使用virtual修飾符是錯誤的。
·通過包括使用override修飾符的屬性聲明,可在派生類中重寫虛擬繼承屬性。
14、volatile:指示欄位可由操作系統、硬體或並發執行線程等在程序中進行修改。volatile關鍵字表示欄位可能被多個並發執行線程修改。聲明為volatile的欄位不受編譯器優化(假定由單個線程訪問)的限制。這樣可以確保該欄位在任何時間呈現的都是最新的值。volatile修飾符通常用於由多個線程訪問而不使用lock語句(C#參考)語句對訪問進行序列化的欄位。volatile關鍵字可應用於以下類型:·引用類型。·指針類型(在不安全的上下文中)。·整型,如sbyte、byte、short、ushort、int、uint、char、float 和bool。·具有整數基類型的枚舉類型。·已知為引用類型的泛型類型參數。·IntPtr和UIntPtr。所涉及的類型必須是類或結構的欄位。不能將局部變數聲明為volatile。