implementera gränssnitt i VB. Net

vilken skillnad ett år eller två kan ge. För två och ett halvt år sedan trodde jag att jag skulle skriva en bok med titeln Visual Basic 7 Unleashed för Sams. Att slutföra de slutliga utkasten till Sams Visual Basic. NET Unleashed påminner mig om att mycket har förändrats i Visual Basic.

för att hjälpa dig att göra övergången så grundligt och så fullständigt som möjligt själv och andra författare och bidragsgivare skriver mycket om gängning, reflektion, församlingar, COM interop och delegater. Men när jag nyligen granskade programmeringsämnen med en vän påminde jag mig om att det finns utvecklare på alla nivåer, inte bara avancerad nivå. För att vara så noggrann som möjligt utforskar jag avancerade ämnen såväl som icke-avancerade ämnen. (Jag välkomnar också frågor från läsare och skriver ibland en artikel baserad på flera frågor.)

den här artikeln är till den punkten. I den här artikeln kommer vi att undersöka gränssnitt: hur man definierar dem och hur man implementerar dem.

tanken med ett gränssnitt är inte nytt för COM, men i Visual Basic 6 var varje klass ett COM-gränssnitt. I Visual Basic .NET varje klass är en klass och ett gränssnitt är ett gränssnitt, men inte ett COM-gränssnitt. Klasser har funnits i årtionden och gränssnitt är inte COM: s enda räckvidd. En klass beskriver de fält, egenskaper, händelser och metoder som en typ kommer att ha. Ett gränssnitt är mer som en portal eller en bilaga. Ett gränssnitt säger att en typ kommer att implementera dessa specifika metoder, men definierar inte vad en typ är. Till exempel kan ett hus ha ett fönster men det kan också en bil. En typ som implementerar en metod öppen kan definieras som något som har ett fönster, men typerna kan definiera bilar, båtar, hus eller själen.

Visual Basic 6 stöder inte arv eller klasser i objektorienterad mening av konstruktionen. VB6 stöder COM-gränssnitt. VB. Net, å andra sidan stöder klasser och gränssnitt, så en skillnad måste göras mellan de två idiomerna.

definiera klasser och gränssnitt i VB.Net

klassen och gränssnittsidiom använder en mycket liknande syntax när du definierar dem. Följande exempel definierar en tom klass i VB. Net, följt av ett tomt gränssnitt.

Public Class AClassEnd ClassPublic Interface AnInterfaceEnd Interface

klasser kan innehålla fält, egenskaper, händelser och metoder. Dessa element i en klass, som kallas medlemmar, kan ha modifierare som indikerar att de är offentliga, privata, skyddade eller vän. Alla medlemmar i en gränssnittsdeklaration är offentliga och behöver därför inte heller åtkomstmodifierare.

klasser innehåller kod; gränssnitt gör det inte. Klasser som implementerar ett gränssnitt innehåller dock kod. Tänk på att det inte finns några instanser av gränssnitt i VB .NET. Varje instans är en typ som implementerar ett gränssnitt, men är i sig inte en instans av gränssnittet. (Från denna punkt kommer vi att lämna diskussionen om klasser för en annan tid och fokusera bara på gränssnitt.)

implementera gränssnitt

förutsatt att vi har ett gränssnitt som heter AnInterface, kan vi bara lägga till metoddeklarationer till det gränssnittet. Utöka gränssnittet från föregående avsnitt, vi kan lägga till en metod som heter WhoAmI. Resultatet visas nästa.

Public Interface AnInterface Function WhoAmI() As StringEnd Interface

alla typer som implementerar AnInterface-gränssnittet måste implementera varje deklarerad metod i det gränssnittet. I det här exemplet behöver vi bara implementera funktionen WhoAmI. Antag att AClass implementerar AnInterface; vi skulle behöva implementera WhoAmI. Resultatet av implementera AnInterface i AClass skulle ge följande kod.

Public Class AClass Implements AnInterface Public Function WhoAmI() As String Implements AnInterface.WhoAmI Return "AClass" End FunctionEnd Class

det första vi måste göra är att ange att vi vill implementera gränssnittet med namn. Implementerar AnInterface berättar för konsumenterna att AClass kommer att implementera alla metoder som beskrivs i AnInterface. (Visual Studio. Net IDE påminner oss om att vi måste göra det också.)

skillnaden mellan VB6 och VB .NET är att vi måste lägga till Implementeringsklausulen till funktionskroppen som visas i listan. Funktionen förklaras som normal, men klausulen implementerar Ettgränssnitt.WhoAmI Slutför kontraktet mellan klassen och gränssnittet.

slutliga tankar

strukturer kan implementera gränssnitt i VB.NET också. Oavsett om en klass eller en struktur implementerar ett gränssnitt, behöver du Implementeringsuttalandet som visat, och du måste implementera alla metoder som definieras i gränssnittet med hjälp av implementerings-klausulen i slutet av procedurhuvudet för att indikera att en viss metod uppfyller en viss gränssnittsmetod.

gränssnitt kan vara mycket korta eller mycket långa. Metoder som beskrivs av ett gränssnitt kan vara subrutiner eller funktioner, och de kan vara så detaljerade eller så enkla som du behöver dem vara. En metod kan implementera mer än en gränssnittsmetod. Slutligen, kom ihåg att gränssnittsmetoder kan anropas med en hänvisning till objektet eller med en hänvisning till gränssnittet.

om författaren

Paul Kimmel är frilansskribent för Developer.com och CodeGuru.com. leta efter coola Visual Basic. NET-ämnen i sin kommande bok Visual Basic.NET Unleashed tillgänglig i januari 2002.

Paul grundade Software Conceptions, Inc. 1990. Kontakta Paul Kimmel på för att få hjälp med att bygga VB.NET applikationer eller migrering av VB6-applikationer till. NET.

# # #

Write a Comment

Din e-postadress kommer inte publiceras.