this
關鍵字this引用對象自身。它也可以在構造方法內部用于調用同一個類的其他構造方法。
隱藏的靜態變量可以通過”類.靜態變量”來引用,而隱藏的實例變量就需要使用”this.實例變量”來引用。
調用一個重載的構造方法this引用是必須的。
this是個隱式參數,代表當前對象
1
2
3
4
5
|
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 類名
判斷這個引用所指向的對象是否屬于這個類。
用在強制轉換之前,避免類型轉換異常。
1
2
3
4
|
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 | 標記字段可能會被多個線程同時訪問,而不做同步 |
希望本篇文章可以幫到大家
原文鏈接:http://blog.csdn.net/demonliuhui/article/details/70196339