修飾符java
A. java干貨 | Java final修飾符:final修飾屬性、final修飾方法及final修飾類
Java中final關鍵字的深入解析
Java中的final關鍵字是一個關鍵特性,它能夠標記類、變數和方法,使其具備特定的約束。本文將詳細介紹final在屬性、方法和類中的應用,配合實例代碼幫助理解。
final修飾屬性
final修飾的屬性一旦賦值,其值就固定不變。例如,一個實例變數如age(如上代碼所示),一旦設為final,就不能再修改。靜態final變數(如score)則是全局常量,所有類實例都能訪問。
final修飾方法
final方法不能被子類重寫,保證了方法行為的穩定性。在SubExample類中嘗試覆蓋final方法printAge(),編譯器會報錯,因為它被聲明為不可重寫。
final修飾類
final類意味著它不能被繼承,這有助於保護類的結構和內容不變。如Example類,標記為final後,SubExample類嘗試繼承時會報錯。
總結來說,final的使用增強了代碼的確定性和安全性,限制了類、變數和方法的可修改性。本文通過實例講解了final修飾不同元素的情況,希望能幫助你更好地掌握這一Java特性。
B. java的介面、類、屬性、方法各有哪些修飾符
1、
介面的修飾符只有:public
2、
類的修飾符分為:可訪問控制符和非訪問控制符兩種。
可訪問控制符是:公共類修飾符
public
非訪問控制符有:抽象類修飾符
abstract
;最終類修飾符
final
1、公共類修飾符public:
Java
語言中類
的可訪問控制符只有一個:
public
即公共的。每個
Java
程序的主類都必須是
public
類作為公共工具供其它類和程序使用的應定義為
public
類。
2
、抽象類修飾符abstract:凡是用
abstract
修飾符修飾的類,被稱為抽象類。所謂抽象類是指這種類沒有具體對象的一種概念類。這樣的類就是
Java
語言的
abstract
類。
3、最終類修飾符final:當一個類不可能有子類時可用修飾符
final
把它說明為最終類。被定義為
final
的類通常是一些有固定作用、用來完成某種標准功能的類。
4、類預設訪問控制符:如果一個類沒有訪問控制符,說明它具有預設的訪問控制符特性。此時,這個類只能被同一個包中的類訪問或引用。這一訪問特性又稱為包訪問性。
3、屬性的控制修飾符也分為:可訪問控制符和非訪問控制符兩類。
可訪問控制符有
4
種:公共訪問控制符:
public
;私有訪問控制符:
private
;保護訪問控制符:
protected
;私有保護訪問控制符:
private
protected
非訪問控制符有
4
種:靜態域修飾符:
static
;最終域修飾符:
final
;易失
(
共享
)
域修飾符:
volatile
;暫時性域修飾符:
transient
1、公共訪問控制符
public
:用
public
修飾的域稱為公共域。如果公共域屬於一個公共類,則可以被所有其它類所引用。由於
public
修飾符會降低運行的安全性和數據的封裝性,所以一般應減少
public
域的使用。
2、私有訪問控制符
private
:
用
private
修飾的成員變數
(
域
)
只能被該類自身所訪問,而不能被任何其它類
(
包括子類
)
所引用。
3、保護訪問控制符
protected
:用
protected
修飾的成員變數可以被三種類所引用:①該類自身;②與它在同一個包中的其它類;③在其它包中的該類的子類。使用修飾符
protected
的主要作用是允許其它包中它的子類來訪問父類的特定屬性。
4、私有保護訪問控制符
private
protected
:用修飾符
private
protected
修飾的成員變數可以被該類本身或該類的子類兩種類訪問和引用。
5、靜態域修飾符
static
:用
static
修飾的成員變數僅屬於類的變數,而不屬於任何一個具體的對象,靜態成員變數的值是保存在類的內存區域的公共存儲單元,而不是保存在某一個對象的內存區間。任何一個類的對象訪問它時取到的都是相同的數據;任何一個類的對象修改它時
,
也都是對同一個內存單元進行操作。
6、最終域修飾符
final
:最終域修飾符
final
是用來定義符號常量的。一個類的域
(
成員變數
)
如果被修飾符
final
說明,則它的取值在程序的整個執行過程中都是不變的。
7、易失
(
共享
)
域修飾符
volatile
:易失
(
共享
)
域修飾符
volatile
是用來說明這個成員變數可能被幾個線程所控制和修改。也就是說在程序運行過程中,這個成員變數有可能被其它的程序影響或改變它的取值。因此,在使用中要注意這種成員變數取值的變化。通常
volatile
用來修飾接受外部輸入的域。
8、暫時性域修飾符
transient
:暫時性域修飾符
transient
用來定義一個暫時性變數。其特點是:用修飾符
transient
限定的暫時性變數,將指定
Java
虛擬機認定該暫時性變數不屬於永久狀態,以實現不同對象的存檔功能。否則,類中所有變數都是對象的永久狀態的一部分,存儲對象時必須同時保存這些變數。
4、方法的控制修飾符也分為:可訪問控制符和非訪問控制符兩類。
可訪問控制符有
4
種:公共訪問控制符:
public
;私有訪問控制符:
private
;保護訪問控制符:
protected
;私有保護訪問控制符:
private
protected
非訪問控制符有
5
種:抽象方法控制符:
abstract
;靜態方法控制符:
static
;最終方法控制符:
final
;本地方法控制符:
native
;同步方法控制符:
synchronized
1、抽象方法控制符
abstract
:用修飾符
abstract
修飾的方法稱為抽象方法。抽象方法是一種僅有方法頭,沒有方法體和操作實現的一種方法。
2、靜態方法控制符
static
:用修飾符
static
修飾的方法稱為靜態方法。靜態方法是屬於整個類的類方法;而不使用
static
修飾、限定的方法是屬於某個具體類對象的方法。
由於
static
方法是屬於整個類的,所以它不能操縱和處理屬於某個對象的成員變數,而只能處理屬於整個類的成員變數,即
static
方法只能處理
static
的域。
3、最終方法控制符
final
:用修飾符
final
修飾的方法稱為最終方法。最終方法是功能和內部語句不能更改的方法,即最終方法不能重載。這樣,就固定了這個方法所具有的功能和操作,防止當前類的子類對父類關鍵方法的錯誤定義,保證了程序的安全性和正確性。所有被
private
修飾符限定為私有的方法,以及所有包含在
final
類
(
最終類
)
中的方法,都被認為是最終方法。
4、本地方法控制符
native
:用修飾符
native
修飾的方法稱為本地方法。為了提高程序的運行速度,需要用其它的高級語言書寫程序的方法體,那麼該方法可定義為本地方法用修飾符
native
來修飾;
5、同步方法控制符
synchronized
:該修飾符主要用於多線程共存的程序中的協調和同步。
C. java中有幾種修飾符
java中的修飾符分為類修飾符,欄位修飾符,方法修飾符。根據功能的不同,主要分為以下五種。
1、許可權訪問修飾符
public,protected,default,private,這四種級別的修飾符都可以用來修飾類、方法和欄位。
(3)修飾符java擴展閱讀:
修飾符的特點:
static是一個修飾符,用於修飾成員(成員變數和成員函數)
靜態成員隨著類的載入而載入。靜態成員優先於對象存在。靜態成員被所有對象所共享靜態成員多了一個中調用方式,可以被類名直接調用。
使用的注意事項:
靜態方法只能訪問靜態成員, 非靜態方法既可以訪問靜態又可以訪問非靜態。靜態方法中不可以定義this,super關鍵字。因為this代表是對象。而靜態存在時,有可能沒有對象。所以靜態方法運行時,this是沒有任何對象代表的。
簡單說,先進內存的數據不可以訪問後進內存的數據,可是後進內存數據可以訪問先進內存的數據。主函數是靜態的。
D. java:為什麼abstract類不能用final修飾呢
abstract類不能用final修飾,因為這兩個修飾符在Java中的語義是相互矛盾的。
abstract類的定義:abstract類是為了被其他類繼承而設計的,其主要目的是提供一個或多個抽象方法,強制子類實現這些方法。
final修飾符的含義:當一個類被final修飾時,意味著這個類不能被其他類繼承。也就是說,final類是一個「終端類」,它不會有子類。
矛盾之處:由於abstract類的存在就是為了被繼承並實現其抽象方法,而final類則不能被繼承。因此,將abstract和final這兩個修飾符同時用於一個類是沒有意義的,也是不被Java語法所允許的。一個類如果被聲明為abstract,就意味著它期待被其他類繼承;而如果同時被聲明為final,則意味著它不能被繼承。這兩個修飾符的語義在這里產生了沖突。
綜上所述,abstract類不能用final修飾,因為它們的語義相互矛盾。