Interface kan översättas med gränssnitt eller samspel. Ofta pratar man om grafiska användargränssnitt vilket är det som visas på en datorskärm, TV, mobiltelefon eller liknande. Gränssnittet hjälper användaren att kommunicera med maskinen eftersom vi människor inte är så bra på att prata maskinkod. Interfaces, är likt klasser, där du definierar ett dina properties, metoder och events. Sv: Någon som på svenska kan förklara 'Interface'?
Hoppas att detta har varit till nån hjälp.
/HML
...såg inte vilket forum jag var i, se nedanstående svar istället...Sv: Någon som på svenska kan förklara 'Interface'?
Men skillanden mellan interface och klasser är att interface har ingen implementation.
Interface implementeras av klasser och är definierade separat från klassen.
Du kan se ett Interface som ett kontrakt. i den klass som du implementerar ett interface, så måste du implemetera alla aspekter av det interfacet precis så som det är definierat. Om du ser ett interface som ett kontakt, så har både sidorna en skylldighet att följa det. Publiceraren av interfacet går med på att aldrig ändra det och implementatören går med på att implementera interfacet precis som är överenskommet. Efter att ett interface är implementerat så ska det inte ändras efter att det en gång har blivit publicerat. Att ändra ett publicerat interface kan bryta existerande kod.
Med interface så kan du minimera kompabilitets problem, samt gruppera objekt som liknar varandra. Med det menar jag att du kan tex skapa ett interface som beskriver en bil med dess egenskaper och metoder. Sedan skapar du en bil klass som ska ha det utseendet som du beskrivit i ditt interface. Jag skulle iofs skapat en abstrakt klass som heter Car som jag sedan ärver ifrån mina olika Car objekt. Var en abstrakt klass är går jag inte in nu och här. Men om du vet vad en abstrakt klass så se interface som det, men interface kan inte ha implementation. Med ett interface så behöver du inte beskriva en hel klass utan det går bra med bara vissa delar. Ofta har man ett och samma interface implmenterat av olika klasser där vissa metoder eller egenskaper är lika. Tex flygplan och bil. De båda kan stanna och stoppa, och om du vill att vissa delar av ett flygplan och bil ska gå att anropa på samma sätt så kan du skapa ett interface som har metoden Start och Stop som du då implementerar.
mittFlygPlan.Start()
mittFlygPlan.Stop()
minBil.Start()
minBil.Stop()
Exempel på detta. Låt oss säga att du skapar ett interface för olika maskiner, där alla maskiner har en Start och en Stop metod och som sedan ska gå att startas och stoppas utifrån en och samma metod:
<code>
Interface IMachine
Sub Start()
Sub Stop()
End Interface
Public Class AirPlane
Implements IMachine
Public Sub Start() Implements IMachine.Start
Public Sub Stop() Implements IMachine.Start
...
End Class
Public Class Car
Implements IMachine
Public Sub Start() Implements IMachine.Start
Public Sub Stop() Implements IMachine.Start
...
End Class
Dim mittFlygplan As New AirPlane
Dim minBil As New Car
StartMachine(mittFlygplan)
StartMachine(minBil)
Public Sub StartMachine(Dim myMachine As IMachine)
myMachine.Start()
End Sub
</code>
Eftersom både flyplan och bil har implementerat samma interface så kan jag skicka in dom som parametrar till metoden StartMachine där metoden startar bilen eller flygplanet beorende på vilken av som jag skickar in i metoden. Om vi nu bestämmer oss för att skapa en traktor som implementerar IMachine interfacet så kan vi starta den enkelt via att skicka in traktor till StartMachine, eftersom delar av traktorn har samma gränsnitt (Interface) som en maskin.
Hoppas detta gjorde dig lite klokare.
/Fredrik N