程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java潤飾符 abstract,static,final 的差別詳解

Java潤飾符 abstract,static,final 的差別詳解

編輯:關於JAVA

Java潤飾符 abstract,static,final 的差別詳解。本站提示廣大學習愛好者:(Java潤飾符 abstract,static,final 的差別詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Java潤飾符 abstract,static,final 的差別詳解正文


static 表現靜態,它可以潤飾屬性,辦法和代碼塊。

1.static潤飾屬性(類變量),那末這個屬性便可以用類名.屬性名來拜訪,也就是使這個屬性成為本類的類變量,為本類對象所共有。這個屬性就是全類私有。(共有的類變量與對象有關,只和類有關)。

類加載的進程,類自己也是保留在文件中(字節碼文件保留著類的信息)的,java會經由過程I/O流把類的文件(字節碼文件)讀入JVM(java虛擬機),這個進程成為類的加載。JVM(java虛擬機)會經由過程類途徑(CLASSPATH)來找字節碼文件。

類變量,會在加載時主動初始化,初始化規矩和實例變量雷同。

留意:類中的實例變量是在創立對象時被初始化的,被static潤飾的屬性,也就是類變量,是在類加載時被創立並停止初始化,類加載的進程是停止一次。也就是類變量只會被創立一次。

2.static潤飾辦法(靜態辦法),會使這個辦法成為全部類所私有的辦法,可以用類名.辦法名拜訪。

留意:static潤飾的辦法,不直接能拜訪本類中的非靜態(static)成員(包含辦法和屬性),本類的非靜態(static)辦法可以拜訪本類的靜態成員(包含辦法和屬性),可以挪用靜態辦法。靜態辦法要鄭重應用。在靜態辦法中不克不及湧現this症結字。

留意:父類中是靜態辦法,子類中不克不及籠罩為非靜態辦法,在相符籠罩規矩的條件下,在父子類中,父類中的靜態辦法可以被子類中的靜態辦法籠罩,然則沒有多態。(在應用對象挪用靜態辦法是實際上是挪用編譯時類型的靜態辦法)

留意:父子類中,靜態辦法只能被靜態辦法籠罩,父子類中,非靜態辦法只能被非靜態辦法籠罩。

java中的main辦法必需寫成static的由於,在類加載時沒法創立對象,由於靜態辦法可以欠亨過對象挪用所以在類的main辦法。地點在類加載時便可以經由過程main辦法進口來運轉法式。

3.static潤飾初始代碼塊,這時候這個初始代碼塊就叫做靜態初始代碼塊,這個代碼塊只在類加載時被履行一次。可以用靜態初始代碼塊初始化一個類。

靜態初始代碼塊,寫在類體中的“{}”,這個代碼塊是在生成對象的初始化屬性是運轉。這類代碼塊叫靜態初始代碼塊。

類在甚麼時刻會被加載,創立對象時會加載類,挪用類中靜態辦法或拜訪靜態屬性也是會加載類的。在加載子類時必會先加載父類,類加載會有延遲加載准繩,只要在必需加載時才會加載。

final潤飾符,可以潤飾變量,辦法,類

1.final潤飾變量
被fianl潤飾的變量就會釀成常量(常量應該年夜寫),一旦賦值不克不及轉變,(可以在初始化時直接賦值,也能夠在結構辦法裡也能夠賦值,只能在這兩種辦法裡二選一,不克不及不為常量賦值),fianl的常量不會有默許初始值,關於直接在初始化是賦值時final潤飾符常和static潤飾符一路應用。

2.final潤飾辦法,被final潤飾的辦法將不克不及被其子類籠罩,堅持辦法的穩固不克不及被籠罩。
3.final潤飾類,被final潤飾的類將不克不及被繼續。final類中的辦法也都是final的。

留意:final,不克不及用來潤飾結構辦法,在父類中假如有常量屬性,在子類中應用常量屬性時是不會停止父類的類加載。

不變形式,對象一旦創立屬性就不會轉變。用final潤飾屬性,也用final潤飾類(強不變形式),用final潤飾屬性(弱不變形式)。

不變形式的典范表現:java.lang.String類,不變形式可以完成對象的同享(可以用一個對象實例賦值給多個對象變量)

池化的思惟,把須要同享的數據放在池中(節儉空間,同享數據)
只要String類可以用“”中的字面值創立對象。在String類中,以字面值創立時,會到Java辦法空間的串池空間中去查找,假如有就前往串池中字符串的地址,並把這個地址付給對象變量。假如沒有則會在串池裡創立一個字符串對象,並前往其地址付購對象變量,當另外一個以字面值創立對象時則會反復上述進程。
假如是new在堆空間中創立String類的對象,則不會有上述的進程。

String類中的intern()辦法會將在堆空間中創立的String類對象中的字符串和串池中的比對,假如有雷同的串就前往這個串的串池中的地址。

不變形式在關於對象停止修正,添加操作是使相當費事的,他會發生許多的中央渣滓對象。創立和燒毀的資本的開支是相當年夜的。

String類在字符串聯接時會先的效力很低,就是由於它所發生的對象的書性是不克不及夠修正的,當銜接字符串時也就是只能創立新的對象。

關於許多的字符串聯接,應該應用StringBuffer類,在應用這個類的對象來停止字符串聯接時就不會有過剩的中央對象生成,從而優化了效力。

abstract(籠統)潤飾符,可以潤飾類和辦法
1.abstract潤飾類,會使這個類成為一個籠統類,這個類將不克不及生成對象實例,但可以做為對象變量聲明的類型,也就是編譯時類型,籠統類就像當於一類的半制品,須要子類繼續並籠罩個中的籠統辦法。

2.abstract潤飾辦法,會使這個辦法釀成籠統辦法,也就是只要聲明(界說)而沒有完成,完成部門以";"取代。須要子類繼續完成(籠罩)。

留意:有籠統辦法的類必定是籠統類。然則籠統類中紛歧建都是籠統辦法,也能夠滿是詳細辦法。
abstract潤飾符在潤飾類時必需放在類名前。

abstract潤飾辦法就是請求其子類籠罩(完成)這個辦法。挪用時可以以多態方法挪用子類籠罩(完成)後的辦法,也就是說籠統辦法必需在其子類中完成,除非子類自己也是籠統類。

留意:父類是籠統類,個中有籠統辦法,那末子類繼續父類,並把父類中的一切籠統辦法都完成(籠罩)了,子類才有創立對象的實例的才能,不然子類也必需是籠統類。籠統類中可以有結構辦法,是子類在結構子類對象時須要挪用的父類(籠統類)的結構辦法。

final和abstract,private和abstract,static和abstract,這些是不克不及放在一路的潤飾符,由於abstract潤飾的辦法是必需在其子類中完成(籠罩),能力以多態方法挪用,以上潤飾符在潤飾辦法時代子類都籠罩不了這個辦法,final是弗成以籠罩,private是不克不及夠繼續到子類,所以也就不克不及籠罩,static是可以籠罩的,然則在挪用時會挪用編譯時類型的辦法,由於挪用的是父類的辦法,而父類的辦法又是籠統的辦法,又不克不及夠挪用,所以上的潤飾符不克不及放在一路。

籠統(abstract)辦法代表了某種尺度,界說尺度,界說功效,在子類中去完成功效(子類繼續了父類並須要給出從父類繼續的籠統辦法的完成)。
辦法一時光想不到怎樣被完成,或成心要子類去完成而界說某種尺度,這個辦法可以被界說為籠統。(abstract)

模板辦法形式
用abstract把制定尺度和完成尺度離開,制訂的尺度就是模板,完成就是按模板尺度來完成,也就是繼續模板,完成模板中響應功效的辦法。模板中不許可修正的辦法可以用fianl來潤飾,這個辦法不克不及使籠統辦法,為包管平安,封裝,把模板中不地下的部門用protected(掩護)潤飾。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved