程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java this、final等關鍵字總結

Java this、final等關鍵字總結

編輯:關於JAVA

Java this、final等關鍵字總結。本站提示廣大學習愛好者:(Java this、final等關鍵字總結)文章只能為提供參考,不一定能成為您想要的結果。以下是Java this、final等關鍵字總結正文


this

關鍵字this引用對象自身。它也可以在構造方法內部用於調用同一個類的其他構造方法。

隱藏的靜態變量可以通過”類.靜態變量”來引用,而隱藏的實例變量就需要使用”this.實例變量”來引用。

調用一個重載的構造方法this引用是必須的。

this是個隱式參數,代表當前對象

publie class Student{
 private String name; 
 public void setName(String name){ 
 this.name=name; //this.name為當前對象的成員變量 
} }

如果某個構造方法的第一個語句具有形式this( ••• ),那麼這個構造方法將調用同一類中的其他構造方法。

注意:

在構造器中this(…)必須放在該構造器的第一行。

this不能出現在靜態方法裡面

super

super關鍵字代指父類,可以用於調用父類的普通方法和構造方法。

super()表示調用父類的構造器

super.方法來引用父類的方法

super()也和this()一樣必須放在方法的第一句

super()和this()不能同時出現

super可以屏蔽子類屬性和父類屬性重名時帶來的屬性遮蓋,super. 表示調用父類的方法或屬性

在子類的構造器中如果沒有指定調用父類的哪一個構造器,那麼就會調用父類的無參構造器,即super()

注意:

父類的構造器不能被子類繼承

方法和屬性可以被繼承,權限不限制能否繼承過來,限制的是能否直接訪問

先構造父類,後構造子類

instanceof

用法:引用 instanceof 類名

判斷這個引用所指向的對象是否屬於這個類。

用在強制轉換之前,避免類型轉換異常。

 if(a instanceof Dog){ 
 Dog d=(Dog)a; 
 } 
implements

一個類實現一個接口必須實現接口中所有的方法,否則其為抽象類,並且在實現類中的方法要加上public(不能省略)。

類中的默認修飾符:default。

接口中的默認修飾符:public。

一個類除了繼承另一個類外(只能繼承一個類),還可以實現多個接口(接口之間用逗號分隔)。

static

把對象相關的變成類相關的,它可以修飾屬性、方法、代碼塊和內部類.

static修飾屬性(類變量):

那麼這個屬性就可以用” 類名.屬性名 “來訪問,也就是使這個屬性成為本類的類變量,為本類對象所共享。

類加載的過程

類本身也是保存在文件中(字節碼文件保存著類的信息)的,Java會通過I/O流把類的文件讀入JVM(java虛擬機),這個過程稱為類的 加載。

JVM會通過類路徑(CLASSPATH)來找字節碼文件。需要的時候才會進行類加載,生成對象時是先加載後構造

類變量,會在加載時自動初始化,初始化規則和實例變量相同。

注意:

類中的實例變量是在創建對象時被初始化的。

static修飾的屬性,是在類加載時被創建並進行初始化,類加載的過程只進行一次,也就是類變量只會被創建一次。

static修飾方法(靜態方法):

會使這個方法成為整個類所公有的方法,可以用” 類名.方法名 “訪問。

static修飾的方法,不能直接訪問本類中的非靜態成員,但本類的非靜態方法可以訪問本類的靜態成員。

在靜態方法中不能出現this關鍵字。

父類中是靜態方法,子類中不能覆蓋為非靜態方法,在符合覆蓋規則的前提下,在父子類中,父類中的靜態方法可以被子類中的靜態方法覆蓋,但是沒有多態。(在使用對象調用靜態方法時其實是調用編譯時類型的靜態方法)

java中的main方法必須寫成static的原因:

在類加載時無法創建對象,而靜態方法可以不通過對象調用,所以在類加載時就可以通過main方法入口來運行程序。

static修飾初始代碼塊:

這時這個初始代碼塊就叫做靜態初始代碼塊,這個代碼塊只在類加載時被執行一次。

可以用靜態初始代碼塊初始化一個類。

動態初始代碼塊,寫在類體中的“{}”,這個代碼塊是在生成對象時運行,這種代碼塊叫動態初始代碼

final

修飾符final:不允許改變,可以修飾變量、方法、類。

final修飾變量:

被fianl修飾的變量就會變成常量,一旦賦值不能改變

常量可以在初始化時直接賦值,也可以在構造方法裡賦值,只能在這兩種方法裡二選一,不能不為常量賦值

常量不會有默認初始值

鎖定棧,使棧中的數據不可以改變

靜態常量只能在初始化時直接賦值

final修飾方法:

被final修飾的方法將不能被其子類覆蓋,保持方法的穩定不能被覆蓋

final修飾類:

被final修飾的類將不能被繼承

final類中的方法也都是final的

注意:

final不能用來修飾構造方法

abstract:

修飾符abstract:抽象的,定義框架不去實現,可以修飾類和方法

abstract修飾類:

會使這個類成為一個抽象類,這個類將不能生成對象實例,但可以做為對象變量聲明的類型,也就是編譯時類型

抽象類就相當於一個類的半成品,需要子類繼承並覆蓋其中的抽象方法,這時子類才又創建實例的能力,如果子類沒有實現父類的抽象方法,那麼子類也要為抽象類。

abstract修飾方法:

會使這個方法變成抽象方法,也就是只有聲明而沒有實現,實現部分以”;”代替,需要子類繼承實現。

抽象方法代表了某種標准,定義標准,定義功能,在子類中去實現功能

(子類繼承了父類並需要給出從父類繼承的抽象方法的實現)。

方法一時間想不到怎麼被實現,或有意要子類去實現而定義某種標准,這個方法可以被定義為抽象。

注意:

有抽象方法的類一定是抽象類。但是抽象類中不一定都是抽象方法,也可以全是具體方法。

關鍵字 描述 int 32位整型數 boolean 布爾數據類型 float 32-bit單精度浮點數 long 64位整型數 short 16位數字 byte 8-bit 有符號數據類型 double 64-bit雙精度浮點數 char 16-bit Unicode字符數據類型 abstract 抽象方法,抽象類的修飾符 extends 表示一個類是另一個類的子類 implements 表示一個類實現了接口 assert 斷言條件是否滿足 break 跳出循環或者label代碼段 continue 不執行循環體剩余部分 case switch語句的一個條件 catch 和try搭配撲捉異常信息 final 表示一個值在初始化之後就不能再改變了,表示方法不能被重寫,或者一個類不能有子類 finally try 語句不管是否發生異常都要執行的語句塊 class 定義類 const 未使用 default switch語句中的默認分支 enum 枚舉類型 goto 未使用 if 條件語句 import 導入類 instanceof 測試一個對象是否是某個類的實例 interface 接口,一種抽象的類型,僅有方法和常量的定義 native 表示方法用非java代碼實現 new 分配新的類實例 package 一系列相關類組成一個包 private 表示私有字段,或者方法等,只能從類內部訪問 protected 表示字段只能通過類或者其子類訪問,子類或者在同一個包內的其他類 public 表示共有屬性或者方法 return 方法返回值 static 表示在類級別定義,所有實例共享的 strictfp 浮點數比較使用嚴格的規則 super 表示基類 switch 選擇語句 synchronized 表示同一時間只能由一個線程訪問的代碼塊 this 表示調用當前實例,或者調用另一個構造函數 throw 拋出異常 throws 定義方法可能拋出的異常 transient 修飾不要序列化的字段 try 表示代碼塊要做異常處理或者和finally配合表示是否拋出異常都執行finally中的代碼 void 標記方法不返回任何值 volatile 標記字段可能會被多個線程同時訪問,而不做同步

希望本篇文章可以幫到大家

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