① 什麼是訪問控制符有哪些訪問控制符哪些可以用來修飾類哪些用來修飾域和方法試述不同訪問控制符的作用
一,非訪問修飾符。
1, 抽象類:
凡是用abstract修飾符修飾的類被稱為抽象類。抽象類就是沒有具體對象的概念類。
抽象類是一種經過優化的概念組織方式:把共同特點抽象出來;其後在描述和處理某一種具體對象時,就只需描述不同的特殊之處。這種組織方式使得所有的概念層次分明,簡潔洗練,非常符合人們日常的思維習慣。
由於抽象類是它的所有子類的公共屬性的集合,所以使用抽象類的一個優點就是可以充分利用這些公共屬性來提高開發和維護程序的效率。
值得一提的是,面向對象技術是要用更接近於人類思維方式的方法來處理實際問題,抽象類的設立就是這種思想的具體體現之一,它是模仿人類的思維模式的產物。
2,最終類:
如果一個類被final修飾符所修飾和限定,說明這個類不可能有子類。
被定義為final的類通常是一些有固定作用、用來完成某種標准功能的類。如Java系統定義好的用來實現網路功能的InterAddress、Socket等類都是final類。
abstract和final修飾符不能同時修飾一個類,因為abstract類自身沒有具體對象,需要派生出子類後在創建子類的對象;而final類不可能有子類。這樣放在一起修飾就沒有意義了。
3,有些類的修飾符也可以用來修飾類中的域或方法:
(1) 域:是類和對象的靜態屬性,定義域的操作就是說明變數或創建對象的操作。
<1> 靜態域:
用static修飾符修飾的域是僅屬於類的靜態域。靜態域是類中每個對象共享的域。他們是類的域,不屬於任何一個類的具體對象。是一個公共的存儲單元,任何一個類的對象訪問它時,取到的都是相同的數值。
<2> 靜態初始化器:
靜態初始化器是由關鍵字static引導的一對大括弧括起的語句組。作用是:在載入時,初始化類的靜態域。
與構造函數相同,他們都是用來完成初始化的工作,但是靜態初始化器與構造函數有三點不同:
①構造函數是對每個新創建的對象初始化,而靜態初始化器是對類自身進行初始化。
②構造函數是在用new運算符產生新對象時由系統自動執行,而靜態初始化器則是在它所屬的類載入到內存時由系統調用執行。
③不同於構造函數,靜態初始化器不是方法,沒有方法名、返回值和參數列表。
<3> 最終域:
用final修飾的域,實際上就是Java中的常量。
用final修飾符說明常量時,需要注意以下幾點:
①需要說明常量的數據類型。
②需要同時指出常量的具體取值。
③因為所有類對象的常量成員,其數值都固定一致,為了節省空間,常量通常聲明為static。
<4> 易失域:
如果一個域被volatile修飾符所修飾,說明這個域可能同時被幾個線程所控制和修改,即這個域不僅僅被當前程序所掌握,在運行過程中可能在其他未知的程序操作影響和改變該域的取值。在使用當中應該特別注意。
通常,volatile用來修飾接受外部輸入的域。如表示當前時間的變數將系統的後台線程隨時修改,以保證程序中取到的總是最新的當前系統時間,所以可以把它定義為易失域。
(2)方法:是類的動態屬性,標志了類所具有的功能和操作。小括弧是方法的標志。
<1> 抽象方法:
修飾符abstract修飾的抽象方法是一種僅有方法頭,而沒有具體的方法體和操作實現的方法。使用抽象方法的目的是使所有的子類,對外都呈現一個相同名字的方法,是一個統一的介面。所有的抽象方法,都必須存在於抽象類之中。
<2> 靜態方法:
用static修飾符修飾的方法,是屬於整個類的類方法,不用的是對象或實例的方法。調用這種方法時,應該使用類名作前綴;這種方法在內存中的代碼段將隨著類的定義而分配和裝載,不被任何一個對象專有;只能處理屬於整個類的成員變數。
<3> 最終方法:
用final修飾符修飾的類方法。功能和內部語句不能再更改的方法,不能再被繼承。
注意:所有已被private修飾符限定為私有的方法,以及所有包含在final類中的方法,都被預設地認為是final的。
<4> 本地方法:
用native修飾符聲明其他語言書寫方法體並具體實現方法功能的特殊的方法。這里的其他語言包括C/C++/FROTRAN/匯編等。由於native的方法的方法體使用其他語言在程序外部寫成,所以所有的native方法都沒有方法體,而用一個分號代替。
<5> 同步方法:
如果synchronized修飾的方法是一個類的方法(即static的方法),那麼在被調用執行前,將把系統類Class中對應當前類的對象加鎖。如果synchronized修飾的是一個對象的方法(未用static修飾的方法),則這個方法在被調用執行前,將把當前對象加鎖。Synchronized修飾符主要用於多線程共存的程序中的協調和同步。
二,訪問控制符。
訪問控制符是一組限定類、域或方法是否可以被程序里的其他部分訪問和調用的修飾符。類的訪問控制符只有一個public,域和方法的訪問控制符有四個,分別是public、private、protected、private protected,另外還有一種沒有定義專門的訪問控制符的預設情況。
1, 公有訪問控制符public:
Java的類是通過包的概念來組織的,包氏類的一個鬆散的集合。處於同一個包中的類可以不需要任何說明而方便的互相訪問和引用,而對於不同包中的類,則不行。但當一個類被聲明為public時,他就具有了被其他包中的類訪問的可能性,只要這些其他包中的類在程序中使用import語句引入public類,就可以訪問和引用這個類。
類中被設定為public的方法是這個類對外的介面部分,避免了程序的其他部分直接去操作類內的數據,這實際就是數據封裝思想的體現。
每個Java程序的主類都必須是public類,也是基於相同的原因。
用public修飾的類的域稱為公共域。如果公共域屬於公共類,則它能被所有的其他類所引用。public修飾符會造成安全性的數據封裝性下降,所以一般應減少public域的使用。
2, 預設訪問控制符:
預設訪問控制權規定,該類只能被同一個包中的類訪問和引用,而不可以被其他包中的類使用,這種訪問特性又稱為包訪問性。
同樣道理,類內的域或方法如果美育訪問控制符來限定,也就具有包訪問性。
簡單說,定義在同一個程序中的所有類屬於一個包。
3,私有訪問控制符private :
用private修飾得域或方法只能被該類自身所訪問和修改,而且不能被任何其他類(包括該類的子類)來獲取和引用。private修飾符用來聲明那些類的私有成員,它提供了最高的保護級別。
4,保護訪問控制符protected :
用protected修飾的成員變數可以被三種類所引用:該類自身、與它在同一個包中的其它類、在其他包中的該類的子類。使用protected修飾符的主要作用是允許其他包中該類的子類來訪問父類的特定屬性。
5,私有保護訪問控制符 private protected :
用private protected修飾的成員變數可以被兩種類訪問和引用,一種是該類本身,一種是該類的所有子類。把同一個包內的非子類排除在可訪問的范圍之外,使得成員變數更專於具有明確繼承關系的類,而不是鬆散地組合在一起的包。
② C#的訪問控制符有哪些
C#共有六種訪問控制修飾符
default:default = private(可見性)
public:能見度最高,在任何地方均可見
private:只有在類內部可見,它時可訪問性最低的修飾符
internal:在程序集內部可以進行訪問,程序集外部不能進行訪問(internal與protected internal的區別:當父類與子類在同一程序集時,internal成員可見,當子類與父類不在同一程序集時,子類不能訪問父類的internal成員,但是子類可以訪問父類的protected internal成員)
protected:保護的,它的可訪問性第二低,僅次於private
protected internal:C#唯一組合修飾符
③ 在Java中,什麼是訪問控制符有哪些訪問控制符哪些可以用來修飾類哪些用來修飾方法
類修飾符
Public
可以從其他類中訪問
obstract
本類不能被實例化
final
不能再聲明子類
構造器修飾符
Public
可以從所有的類中訪問
Protected
只能從自己的類和它的子類中訪問
Private
只能在本類中訪問
域修飾符
Public
可以從所有的類中訪問
Protected
只能從本類和它的子類中訪問
Private
只能從本類中訪問它
Static
對該類的所有實例只能有一個域值存在
transient
不是一個對象持久狀態的一部份
Volatile
可以被非同步的線程所修改
final
必須對它賦予初值並且不能修改它
局部變數修飾符
final
必須對它賦予初值並且不能修改它
方法修飾符
Public
可以從所有的類中訪問它
Protected
只能從本類及其子類中訪問它
Private
只能從本類中訪問它
abstract
沒有方法體,屬於一個抽象類
final
子類不能覆蓋它
static
被綁定於類本身而不是類的實例
native
該方法由其他編程語言實現
asnchronized
在一個線程調用它之前必須先給它加
④ 為什麼java中定義主類的類頭時可以使用的訪問控制符是public,而不是其它的修飾符
一般類都需要各種工具去加工才能完成一個事件,比如applet工具,awt繪圖工具。
如果他不是public,那麼這個類無法與其他文件包聯動,所以大部分都是public
⑤ java中的訪問控制符有哪3種
private 私有
public 共有
protected 子級
還有一個什麼都不寫,默認
⑥ 不允許作為類及類成員的訪問控制符的是什麼
private是同一類 可以作為類和類成員訪問控制符,static沒有控制符的作用
⑦ Java的訪問控制符有哪些,試說明它們之間的區別
private私有,只能被本類訪問 public共有,能被本項目的任何一個類訪問 protected受保護的,只能被子類訪問
⑧ java中訪問控制符的作用
java中訪問控制符的作用是說明被聲明的內容(類、屬性、方法和構造方法)的訪問許可權,就像發布的文件一樣,在文件中標注機密,就是說明該文件可以被那些人閱讀。
訪問控制在面向對象技術中處於很重要的地位,合理的使用訪問控制符,可以通過降低類和類之間的耦合性(關聯性)來降低整個項目的復雜度,也便於整個項目的開發和維護。具體的實現就是通過訪問控制符將類中會被其它類調用的內容開放出來,而把不希望別人調用的內容隱藏起來,這樣一個類開放的信息變得比較有限,從而降低了整個項目開放的信息,另外因為不被別人調用的功能被隱藏起來,在修改類內部隱藏的內容時,只要最終的功能沒有改變,即使改變功能的實現方式,項目中其它的類不需要更改,這樣可以提高了代碼的可維護性,便於項目代碼的修改。
在Java語言中訪問控制許可權有4種,使用三個關鍵字進行表達,依次如下:
lpublic——公共的
lprotected——受保護的
l無訪問控制符——默認的
lprivate——私有的
在實際使用時,類聲明的訪問控制符只有2個:public和無訪問控制符,屬性聲明、構造方法聲明和方法聲明的訪問控制符可以是以上4種中的任何一個。
這4個訪問控制符的許可權作用如下表所示:
在4種訪問控制中,public一般稱作公共許可權,其限制最小,也可以說沒有限制,使用public修飾的內容可以在其它所有位置訪問,只要能訪問到對應的類,就可以訪問到類內部public修飾的內容,一般在項目中開放的方法和構造方法使用public修飾,開放給項目使用的類也使用public修飾。protected一般稱作繼承許可權,使用protected修飾的內容可以被同一個包中的類訪問也可以在不同包內部的子類中訪問,一般用於修飾只開放給子類的屬性、方法和構造方法。無訪問控制符一般稱作包許可權,無訪問控制符修飾的內容可以被同一個包中的類訪問,一般用於修飾項目中一個包內部的功能類,這些類的功能只是輔助其它的類實現,而為包外部的類提供功能。private一般稱作私有許可權,其限制最大,類似於文件中的絕密,使用private修飾的內容只能在當前類中訪問,而不能被類外部的任何內容訪問,一般修飾不開放給外部使用的內容,修改private的內容一般對外部的實現沒有影響。
⑨ 不允許作為類及類成員的訪問控制符的是() A public B private C static D protected
A
訪問許可權控制符一共4個,public private default protected
傳輸控制字元是設計用來將數據包結構化以及控制在傳輸發生錯誤時何時進行重傳的。
報頭開始(SOH)用於標記數據包中的非數據部分——即含有地址和其他內務數據報文的部分。正文開始(SOT)標記報頭的結束和正文的開始。正文結束(EOT)標記報文數據的結束。標準的常規是在正文結束符之前的兩個字元處填入報文的校驗和或CRC。
(9)訪問控制符擴展閱讀:
訪問控制的主要功能包括:保證合法用戶訪問受權保護的網路資源,防止非法的主體進入受保護的網路資源,或防止合法用戶對受保護的網路資源進行非授權的訪問。訪問控制首先需要對用戶身份的合法性進行驗證,同時利用控制策略進行選用和管理工作。當用戶身份和訪問許可權驗證之後,還需要對越權操作進行監控。因此,訪問控制的內容包括認證、控制策略實現和安全審計。
⑩ 關於JAVA訪問控制符怎麼更容易理解
public是小姐大家用; protected是2奶,要保護起來用; private是老婆,自己用