同一計算機不同功能層之間的通信規則稱為接口。
對協定進行定義的引用類型。其他類型實現接口,以保證它們支持某些操作。接口指定必須由類提供的成員或實現它的其他接口。與類相似,接口可以包含方法、屬性、索引器和事件作為成員。
leon2 附加:
接口中可以聲明屬性、方法、事件和類型(structure),(但不能聲明變量),但是並不能設置這些成員的具體值,也就是說,衹能定義,不能給它裏面定義的東西賦值。
下面是個 vb.net 2003 的例子。
在 vb.net 的類裏,實現一個接口的語句是:
implements 接口名稱
例如,下面定義一個車(總稱)的接口,這裏的車是各種車的總稱:
public interface icar
property color() as string
property speed() as long
sub printinfo()
end interface
然後在不同類型的“車”類裏實現它:
public class a_car
implements icar
dim m_color as string, m_speed as long
public property color() as string implements icar.color
get
return m_color
end get
set(byval value as string)
m_color = value
end set
end property
protected overrides sub finalize()
msgbox("i was deconstructed!")
end sub
public sub new()
m_color = "red"
m_speed = 210
msgbox("i was constructed!")
end sub
public property speed() as long implements icar.speed
get
return m_speed
end get
set(byval value as long)
m_speed = speed
end set
end property
public sub printinfo() implements icar.printinfo
msgbox("color: " & m_color & vbnewline & "speed: " & m_speed, msgboxstyle.information)
end sub
end class
在 form 的 load 事件中編寫:
dim mycar as new a_car
mycar.printinfo()
運行之後就創建了一個 a_car 類的實例 mycar,然後出現兩個對話框,分別說明實例已經創建和汽車的信息。當窗體卸載時,這個類的實例 mycar 將自動銷毀,這時將出現一個“i was deconstructed!”的對話框。
聲明一個接口時,需要考慮以下幾點:
1.接口主體衹限於對方法,索引器以及屬性的聲明;
2.藉口成員是隱式公開的,如果對其顯式指定訪問級別,就會出現編譯器錯誤;
3.接口中不能包含字段,構造函數和常量等;
4.在接口中不能實現任何方法,屬性或者索引器;
5.在指定方法時,衹需要給出返回類型,名稱和參數列表,然後分號結束。
同一計算機不同功能層之間的通信規則稱為接口。
對協定進行定義的引用類型。其他類型實現接口,以保證它們支持某些操作。接口指定必須由類提供的成員或實現它的其他接口。與類相似,接口可以包含方法、屬性、索引器和事件作為成員。
leon2 附加:
接口中可以聲明屬性、方法、事件和類型(Structure),(但不能聲明變量),但是並不能設置這些成員的具體值,也就是說,衹能定義,不能給它裏面定義的東西賦值。
下面是個 VB.NET 2003 的例子。
在 VB.NET 的類裏,實現一個接口的語句是:
implements 接口名稱
例如,下面定義一個車(總稱)的接口,這裏的車是各種車的總稱:
Public Interface ICar
Property color() As String
Property speed() As Long
Sub PrintInfo()
End Interface
然後在不同類型的“車”類裏實現它:
Public Class A_Car
Implements ICar
Dim m_color As String, m_speed As Long
Public Property color() As String Implements ICar.color
Get
Return m_color
End Get
Set(ByVal Value As String)
m_color = Value
End Set
End Property
Protected Overrides Sub Finalize()
MsgBox("I was deconstructed!")
End Sub
Public Sub New()
m_color = "Red"
m_speed = 210
MsgBox("I was constructed!")
End Sub
Public Property speed() As Long Implements ICar.speed
Get
Return m_speed
End Get
Set(ByVal Value As Long)
m_speed = speed
End Set
End Property
Public Sub PrintInfo() Implements ICar.PrintInfo
MsgBox("Color: " & m_color & vbNewLine & "Speed: " & m_speed, MsgBoxStyle.Information)
End Sub
End Class
在 Form 的 Load 事件中編寫:
Dim myCar As New A_Car
myCar.PrintInfo()
運行之後就創建了一個 A_Car 類的實例 myCar,然後出現兩個對話框,分別說明實例已經創建和汽車的信息。當窗體卸載時,這個類的實例 myCar 將自動銷毀,這時將出現一個“I was deconstructed!”的對話框。
聲明一個接口時,需要考慮以下幾點:
1.接口主體衹限於對方法,索引器以及屬性的聲明;
2.接口成員是隱式公開的,如果對其顯式指定訪問級別,就會出現編譯器錯誤;
3.接口中不能包含字段,構造函數和常量等;
4.在接口中不能實現任何方法,屬性或者索引器;
5.在指定方法時,衹需要給出返回類型,名稱和參數列表,然後分號結束。
面嚮對象的接口 在C++中,一個類被允許繼承多個類。但是在Java以後的語言不被允許。
這樣,如果想繼承多個類時便非常睏難。所以開發方想出了新辦法:接口。
一個接口內,允許包含變量、常量等一個類所包含的基本內容。但是,接口中的函數不允許設定代碼,也就意味着不能把程序入口放到接口裏。由上可以理解到,接口是專門被繼承的。接口存在的意義也是被繼承。和C++裏的抽象類裏的純虛函數是相同的。不能被實例化。
定義接口的關鍵字是interface,例如:
public interface MyInterface{
public void add(int x,int y);
public void volume(int x,int y,int z);
}
繼承接口的關鍵字是implements,相當於繼承類的extends。
需要註意的是,當繼承一個接口時,接口裏的所有函數必須全部被覆蓋。例如:
class Demo implements MyInterface{
public void add(int x,int y){
System.out.println(" "+(x+y));
}
public void volume(int x,int y,int z){
System.out.println(" "+(x*y*z));
}
public static void main(String args[]){
Demo d=new Demo();
d.add(10,20);
d.volume(10,10,10);
}
}
輸出結果:
30
1000
當想繼承多個類時,開發程序不允許,報錯。這樣就要用到接口。因為接口允許多重繼承(,),而類不允許。所以就要用到接口。
Java裏面的接口 Java裏面由於不允許多重繼承,所以如果要實現多個類的功能,則可以通過實現多個接口來實現。
Java接口和Java抽象類代表的就是抽象類型,就是我們需要提出的抽象層的具體表現。OOP面嚮對象的編程,如果要提高程序的復用率,增加程序的可維護性,可擴展性,就必須是面嚮接口的編程,面嚮抽象的編程,正確地使用接口、抽象類這些太有用的抽象類型做為你結構層次上的頂層。
Java接口和Java抽象類有太多相似的地方,又有太多特別的地方,究竟在什麽地方,纔是它們的最佳位置呢?把它們比較一下,你就可以發現了。
1、Java接口和Java抽象類最大的一個區別,就在於Java抽象類可以提供某些方法的部分實現,而Java接口不可以,這大概就是Java抽象類唯一的優點吧,但這個優點非常有用。如果嚮一個抽象類裏加入一個新的具體方法時,那麽它所有的子類都一下子都得到了這個新方法,而Java接口做不到這一點,如果嚮一個Java接口裏加入一個新方法,所有實現這個接口的類就無法成功通過編譯了,因為你必須讓每一個類都再實現這個方法纔行,這顯然是Java接口的缺點。
2、一個抽象類的實現衹能由這個抽象類的子類給出,也就是說,這個實現處在抽象類所定義出的繼承的等級結構中,而由於Java語言的單繼承性,所以抽象類作為類型定義工具的效能大打折扣。在這一點上,Java接口的優勢就出來了,任何一個實現了一個Java接口所規定的方法的類都可以具有這個接口的類型,而一個類可以實現任意多個Java接口,從而這個類就有了多種類型。
3、從第2點不難看出,Java接口是定義混合類型的理想工具,混合類表明一個類不僅僅具有某個主類型的行為,而且具有其他的次要行為。
PHP中的接口
<?php
interface demoInterface{
public function doIt();//聲明方法
}
class hello implements demoInterface{
public function doIt(){
echo "實現接口中的方法";
}
}
$demo=new hello();
$demo->doIt();
?>
RAID卡接口
接口是指RAID卡支持的硬盤接口,目前主要有三種:IDE接口、SCSI接口和SATA接口。 IDE接口:
IDE的英文全稱為“Integrated Drive Electronics”,即“電子集成驅動器”,它的本意是指把“硬盤控製器”與“盤體”集成在一起的硬盤驅動器。把盤體與控製器集成在一起的做法減少了硬盤接口的電纜數目與長度,數據傳輸的可靠性得到了增強,硬盤製造起來變得更容易,因為硬盤生産廠商不需要再擔心自己的硬盤是否與其它廠商生産的控製器兼容,對用戶而言,硬盤安裝起來也更為方便。IDE這一接口技術從誕生至今就一直在不斷發展,性能也不斷的提高,其擁有的價格低廉、兼容性強的特點,為其造就了其它類型硬盤無法替代的地位。
IDE代表着硬盤的一種類型,但在實際的應用中,人們也習慣用IDE來稱呼最早出現IDE類型硬盤ATA-1,這種類型的接口隨着接口技術的發展已經被淘汰了,而其後發展分支出更多類型的硬盤接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都屬於IDE硬盤。此外,由於IDE口屬於並行接口,因此為了和SATA口硬盤相區別,IDE口硬盤也叫PATA口硬盤。
SCSI接口:
SCSI的英文全稱為“Small Computer System Interface”(小型計算機係統接口),是同IDE完全不同的接口,IDE接口是普通PC的標準接口,而SCSI並不是專門為硬盤設計的接口,是一種廣泛應用於小型機上的高速數據傳輸技術。SCSI接口具有應用範圍廣、多任務、帶寬大、CPU占用率低,以及支持熱插拔等優點,但較高的價格使得它很難如IDE硬盤般普及,因此SCSI硬盤主要應用於中、高端服務器和高檔工作站中。SCSI硬盤和普通IDE硬盤相比有很多優點:接口速度快,並且由於主要用於服務器,因此硬盤本身的性能也比較高,硬盤轉速快,緩存容量大,CPU占用率低,擴展性遠優於IDE硬盤,並且支持熱插拔。
SATA接口:
使用SATA(Serial ATA)口的硬盤又叫串口硬盤,是未來PC機硬盤的趨勢。2001年,由Intel、APT、Dell、IBM、希捷、邁拓這幾大廠商組成的Serial ATA委員會正式確立了Serial ATA 1.0規範,2002年,雖然串行ATA的相關設備還未正式上市,但Serial ATA委員會已搶先確立了Serial ATA 2.0規範。Serial ATA采用串行連接方式,串行ATA總綫使用嵌入式時鐘信號,具備了更強的糾錯能力,與以往相比其最大的區別在於能對傳輸指令(不僅僅是數據)進行檢查,如果發現錯誤會自動矯正,這在很大程度上提高了數據傳輸的可靠性。串行接口還具有結構簡單、支持熱插拔的優點。
串口硬盤是一種完全不同於並行ATA的新型硬盤接口類型,由於采用串行方式傳輸數據而知名。相對於並行ATA來說,就具有非常多的優勢。首先,Serial ATA以連續串行的方式傳送數據,一次衹會傳送1位數據。這樣能減少SATA接口的針腳數目,使連接電纜數目變少,效率也會更高。實際上,Serial ATA 僅用四支針腳就能完成所有的工作,分別用於連接電纜、連接地綫、發送數據和接收數據,同時這樣的架構還能降低係統能耗和減小係統復雜性。其次,Serial ATA的起點更高、發展潛力更大,Serial ATA 1.0定義的數據傳輸率可達150MB/s,這比目前最新的並行ATA(即ATA/133)所能達到133MB/s的最高數據傳輸率還高,而在Serial ATA 2.0的數據傳輸率將達到300MB/s,最終SATA將實現600MB/s的最高數據傳輸率。
上圖為支持Serial-ATA技術的標志
上圖為主板上的Serial-ATA接口 RAID技術問世時是基於SCSI接口,因其成本高,因此主要面嚮服務器等高端應用。普通用戶根本無緣擁有RAID。隨着計算機的大衆化,由此帶動PC計算機的空前繁榮。相應的,在市場的帶動下,用於PC計算機的IDE接口設備價格大幅降低,同時性能大幅提高。鑒於此,RAID技術開始移植到IDE 接口上,推出了基於IDE接口的RAID應用,稱為IDE RAID。而基於SCSI接口的RAID應用則相應稱為SCSI RAID。與SCSI RAID相比,IDE RAID具有極低的價格,和一點也不遜色的性能表現,相應的,IDE RAID 解决方案就具有SCSI RAID無法比擬的高性價比。因此 IDE RAID自推出後,受到普通PC用戶和普通商業應用的普遍歡迎。
當然IDE RAID也有其缺點,比如在CPU占用率和連接設備數量等方面就無法與SCSI RAID相比,同時,IDE RAID目前為止還衹支持RAID0、RAID1和RAID0+1,並且性能上也比SCSI RAID略遜一籌,因此高性能計算機應用方面還是以SCSI RAID為主。SATA RAID是剛剛誕生的RAID方式,它與IDE RAID類似,最大的優點是低成本,其他方面也和IDE RAID接近。