2008年8月1日 星期五

何謂是Interface?

看了一堆人家提供的網頁資訊,簡單一句話:
Interface(介面)主要在於協助Java可進行多重繼承的效果。(就是因為Java語言不像C++支援多重繼承)

以下內容(整理過的),就參考一下囉!
Interface(介面)
基礎說明
◆Java語言的介面和類別一樣都屬於參考資料型態。
◆是定義不同類別間的一致行為,也就是一些共同的方法,讓不直接相關的個體能與其他裝置或整個系統互動。
◆是物件的型別,所以介面也可以為陣列的基底型別,而形成異質集合。
◆介面和介面之間也可以有繼承的關係,而且可以有多重繼承的關係,使用"extends"關鍵字。
◆是在類別繼承架構中定義類別行為,內含常數和方法宣告,但是並沒有實作程式碼。目的是制訂整組訊息接收器的規格,模擬類別的多重繼承。

注意事項
◆不可以有靜態常數的重複繼承。如果不同父介面中定義了同名的常數,則子介面型別的物件不可以使用該常數,以免發生曖昧不明的狀況。
◆介面的方法都只有宣告,而且一定沒有實作的程式碼。
◆介面內的方法皆為 public 和 abstract 方法。
◆介面內的屬性皆預設為public、static及final宣告,必須指定其值。當類別實作介面時,類別需要實作「所有」的介面方法。(實作子介面的類別必須將所有在父介面和子介面中所定義的方法實做出來。),故介面並不能隨便新增方法,如果新增介面的抽象方法,就需要新增所有實作此介面的類別方法;如果實作的介面不只一個,請使用「,」逗號分隔。

使用介面的時機
◆在無關的類別間取得相似性質,而不需人為地強制建立類別繼承關係。(只擷取不相關的類別間的相同點,不需要強迫之間有什麼特別關係 -如繼承)
◆宣告一或多個類別必須實作的方法。
◆展現物件的程式介面,而不展現其類別。

介面的程式碼
宣告介面
public interface 介面名稱 {
final 資料型態 常數=值;
……….
傳回值型態 介面方法( 參數列 );
……
}

介面繼承介面
public interface 介面名稱 extends 繼承的介面1,繼承的介面2 {
…… // 額外的常數和方法
}

實作介面
class 類別名稱 implements 介面名稱1, 介面名稱2 {
…//之前的code
// 實作的介面方法
}

範例:
public interface ShapeInterface {
public double getArea(double i, double j);
}
public class Circle extends Object implement ShapeInterface {
//計算圓形面積
public double getArea (double i, double j) {
return (i * i * j);
}
}
public class Rectangle extends Object implement ShapeInterface {
//計算方形面積
public double getArea (double i, double j) {
return (i * j);
}
}
public class Triangle extends Object implement ShapeInterface {
//計算三角形面積
public double getArea (double i, double j) {
return ( (i * j) / 2);
}
}

可再參考此網頁:http://www.study-area.org/coobila/tutorial_447.html


資料來源:各大網站的搜尋引擎

沒有留言: