理解幾個重要的Java 關鍵字

[b]abstract Java 關鍵字[/b]

abstract 關鍵字可以修改類或方法。

abstract 類可以擴展(增加子類),但不能直接實例化。

abstract 方法不在聲明它的類中實現,但必須在某個子類中重寫。

示例
 public abstract class MyClass
{
}
public abstract String myMethod();


註釋
採用 abstract 方法的類本來就是抽象類,並且必須聲明爲 abstract。

abstract 類不能實例化。

僅當 abstract 類的子類實現其超類的所有 abstract 方法時,才能實例化 abstract 類的子類。這種類稱爲具體類,以區別於 abstract 類。

如果 abstract 類的子類沒有實現其超類的所有 abstract 方法,該子類也是 abstract 類。

abstract 關鍵字不能應用於 static、private 或 final 方法,因爲這些方法不能被重寫,因此,不能在子類中實現。

final 類的方法都不能是 abstract,因爲 final 類不能有子類。



[b]extends Java 關鍵字[/b]

extends 關鍵字用在 class 或 interface 聲明中,用於指示所聲明的類或接口是其名稱後跟有 extends 關鍵字的類或接口的子類。

示例
  public class Rectangle extends Polygon
{
}


註釋
在上例中,Rectangle 類繼承 Polygon 類的所有 public 和 protected 變量和方法。

Rectangle 類可以重寫 Polygon 類的任何非 final 方法。

一個類只能擴展一個其他類。


[b]final Java 關鍵字[/b]

final 關鍵字可以應用於類,以指示不能擴展該類(不能有子類)。

final 關鍵字可以應用於方法,以指示不能重寫任何子類中的方法。

示例
  public final class MyFinalClass
{
}
public class MyClass
{
public final String myFinalMethod()
{
<statements>
}
}


註釋
一個類不能同時是 abstract 又是 final。abstract 意味着必須擴展類,final 意味着不能擴展類。

一個方法不能同時是 abstract 又是 final。abstract 意味着必須重寫方法,final 意味着不能重寫方法。





[b]finally Java 關鍵字[/b]

finally 關鍵字用來定義始終在 try-catch-finally 語句中執行的塊。

finally 塊通常包含清理代碼,用在部分執行 try 塊後恢復正常運行。

示例
try
{
<可能引發異常的塊>
}
catch (<java.lang.Exception 或子類> e)
{
<處理異常 e 的代碼>
}
finally
{
<有異常或無異常情況下都執行的語句>
}


註釋
開始和結束標記 { 和 } 是 finally 子句語法的一部分,即使該子句只包含一個語句,也不能省略這兩個標記。

每個 try 塊都必須至少有一個 catch 或 finally 子句。

如果執行 try 塊的任何部分,不論是否出現異常,也不論 try 或 catch 塊是否包含 return、continue 或 break 語句,都一定會執行 finally 塊中的代碼。

如果不出現異常,控件將跳過 try 塊,進入 finally 塊。

如果在執行 try 塊期間出現異常,並且相應的 catch 塊包含 break、continue 或 return 語句,控件將首先穿過 finally 塊,之後再執行 break、continue 或 return。


[b]implements Java 關鍵字[/b]

implements 關鍵字在 class 聲明中使用,以指示所聲明的類提供了在 implements 關鍵字後面的名稱所指定的接口中所聲明的所有方法的實現。

示例
 public class Truck implements IVehicle
{
}


註釋
在上例中,Truck 類必須提供在 IVehicle 接口中所聲明的所有方法的實現。

否則,Truck 類將是獨立的;它可以聲明其他方法和變量,並擴展另一個類。

一個類可以實現多個接口。



[b]
instanceof Java 關鍵字[/b]

instanceof 關鍵字用來確定對象所屬的類。

示例
  if (node instanceof TreeNode)
{
<statements>
}


註釋
在上例中,如果 node 是 TreeNode 類的實例,或者是 TreeNode 的子類的實例,則 instanceof 表達式的值將爲 true。



[b]interface Java 關鍵字[/b]

interface 關鍵字用來聲明新的 Java 接口,接口是方法的集合。

接口是 Java 語言的一項強大功能。任何類都可聲明它實現一個或多個接口,這意味着它實現了在這些接口中所定義的所有方法。

示例
public interface IPolygon
{
public float getArea();
public int getNumberOfSides();
public int getCircumference();
}


註釋
實現了接口的任何類都必須提供在該接口中的所有方法的實現。

一個類可以實現多個接口。





[b]static Java 關鍵字[/b]

static 關鍵字可以應用於內部類(在另一個類中定義的類)、方法或字段(類的成員變量)。

示例
public class MyPublicClass
{
public final static int MAX_OBJECTS = 100;
static int _numObjects = 0;

static class MyStaticClass
{
}

static int getNumObjects()
{
}
}


註釋
通常,static 關鍵字意味着應用它的實體在聲明該實體的類的任何特定實例外部可用。

static(內部)類可以被其他類實例化和引用(即使它是頂級類)。在上面的示例中,另一個類中的代碼可以實例化 MyStaticClass 類,方法是用包含它的類名來限定其名稱,如 MyClass.MyStaticClass。

static 字段(類的成員變量)在類的所有實例中只存在一次。

可以從類的外部調用 static 方法,而不用首先實例化該類。這樣的引用始終包括類名作爲方法調用的限定符。在上面的示例中,MyClass 類外部的代碼以 MyClass.getNumObjects() 的形式調用 getNumObjects() static 方法。

模式:

public final static <type> varName = <value>;

通常用於聲明可以在類的外部使用的類常量。在引用這樣的類常量時需要用類名加以限定。在上面的示例中,另一個類可以用 MyClass.MAX_OBJECTS 形式來引用 MAX_OBJECTS 常量。





[b]switch Java 關鍵字[/b]


switch 語句用於基於某個表達式選擇執行多個代碼塊中的某一個。

示例
int arg = <some value>;
switch (arg)
{
case 1:
<statements>
break;
case 2:
<statements>
break;
default:
<statements>
break;
}
char arg = <some value>;
switch (arg)
{
case 'y':
case 'Y':
<statements>
break;
case 'n':
case 'N':
<statements>
break;
default:
<statements>
break;
}


註釋
switch 條件的計算結果必須等於 byte、char、short 或 int。

case 塊沒有隱式結束點。break 語句通常在每個 case 塊末尾使用,用於退出 switch 語句。

如果沒有 break 語句,執行流將進入所有後面的 case 和/或 default 塊。



[b]synchronized Java 關鍵字[/b]

synchronized 關鍵字可以應用於方法或語句塊,併爲一次只應由一個線程執行的關鍵代碼段提供保護。

示例
public class MyClass
{
public synchronized static String mySyncStaticMethod()
{
}

public synchronized String mySyncMethod()
{
}
{
public class MyOtherClass
{
Object someObj;

public String myMethod()
{
<statements>
synchronized (someObj)
{
<statements affecting someObj>
}
}
}


註釋
synchronized 關鍵字可防止代碼的關鍵代碼段一次被多個線程執行。

如果應用於靜態方法(如上例中的 MySyncStaticMethod),那麼,當該方法一次由一個線程執行時,整個類將被鎖定。

如果應用於實例方法(如上例中的 MySyncMethod),那麼,當該方法一次由一個線程訪問時,該實例將被鎖定。

如果應用於對象或數組,當關聯的代碼塊一次由一個線程執行時,對象或數組將被鎖定。





[b]throw Java 關鍵字[/b]


throw 關鍵字用於引發異常。

示例
import java.io.IOException;

public class MyClass
{
public method readFile(String filename) throws IOException
{
<statements>
if (error)
{
throw new IOException("error reading file");
}
}
}


註釋
throw 語句將 java.lang.Throwable 作爲參數。Throwable 在調用棧中向上傳播,直到被適當的 catch 塊捕獲。

引發非 RuntimeException 異常的任何方法還必須在方法聲明中使用 throws 修飾符來聲明它引發的異常。


[b]throws Java 關鍵字[/b]

throws 關鍵字可以應用於方法,以便指出方法引發了特定類型的異常。

示例
import java.io.IOException;

public class MyClass
{
public method readFile(String filename) throws IOException
{
<statements>
if (error)
{
throw new IOException("error reading file");
}
}
}


註釋
throws 關鍵字將逗號分隔的 java.lang.Throwables 列表作爲參數。

引發非 RuntimeException 異常的任何方法還必須在方法聲明中使用 throws 修飾符來聲明它引發的異常。

要在 try-catch 塊中包含帶 throws 子句的方法的調用,必須提供該方法的調用者。





[b]transient Java 關鍵字[/b]

transient 關鍵字可以應用於類的成員變量,以便指出該成員變量不應在包含它的類實例已序列化時被序列化。

示例
  public class MyClass
{
private transient String password;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章