mi a különbség egy-két év hozhat. Két és fél évvel ezelőtt azt gondoltam, hogy egy könyvet fogok írni Visual Basic 7 Unleashed for Sams címmel. A Sams Visual Basic. Net Unleashed végleges vázlatainak befejezése emlékeztet arra, hogy a Visual Basicben sok minden megváltozott.
annak érdekében, hogy az átmenetet a lehető legteljesebb és legteljesebb mértékben elvégezzem, én és más szerzők és közreműködők sokat írnak a threadingról, a reflexióról, a közgyűlésekről, a COM interopról és a küldöttekről. De a közelmúltban egy barátommal áttekintve a programozási tantárgyakat, eszembe jutott, hogy minden szinten vannak fejlesztők, nem csak a haladó szinten. Ahhoz, hogy olyan alapos, mint lehetséges, azután, én feltárása fejlett témák, valamint a nem fejlett témák. (Örömmel fogadom az olvasók kérdéseit is, és néha több kérdés alapján írok egy cikket.)
ez a cikk a lényeg. Ebben a cikkben megvizsgáljuk az interfészeket: hogyan definiáljuk és hogyan valósítsuk meg őket.
az interfész ötlete nem új a COM számára, de a Visual Basic 6-ban minden osztály COM interfész volt. Visual Basicben .NET minden osztály osztály, az interfész pedig interfész, de nem COM interfész. Az osztályok évtizedek óta léteznek, és az interfészek nem a COM kizárólagos hatáskörébe tartoznak. Egy osztály leírja azokat a mezőket, tulajdonságokat, eseményeket és metódusokat, amelyekkel egy Típus rendelkezik. Az interfész inkább portál vagy melléklet. Az interfész azt mondja, hogy egy Típus megvalósítja ezeket a speciális módszereket, de nem határozza meg, hogy mi a típus. Például egy háznak lehet ablaka, de egy autónak is. A nyitott módszert megvalósító típus meghatározható úgy, mint valami, amelynek van ablaka, de a típusok meghatározhatják az autókat, csónakokat, házakat vagy a lelket.
a Visual Basic 6 nem támogatja az öröklődést vagy az osztályokat a konstrukció objektumorientált értelmében. A VB6 támogatja a COM interfészeket. A VB. Net viszont támogatja az osztályokat és az interfészeket, így különbséget kellett tenni a két idióma között.
osztályok és interfészek meghatározása a VB.Net-ben
az osztály és az interfész idiómák nagyon hasonló szintaxist használnak, amikor definiáljuk őket. A következő példa egy üres osztályt határoz meg a VB.Net-ben, amelyet egy üres felület követ.
Public Class AClassEnd ClassPublic Interface AnInterfaceEnd Interface
az osztályok tartalmazhatnak mezőket, tulajdonságokat, eseményeket és metódusokat. Az osztály ezen elemeinek, az úgynevezett tagoknak lehetnek módosítói, amelyek jelzik, hogy nyilvános, magán, védett vagy barát. Az interfészdeklaráció minden tagja nyilvános, ezért nincs szükségük és nem is rendelkezhetnek hozzáférési módosítókkal.
az osztályok kódot tartalmaznak; az interfészek nem. Az interfészt megvalósító osztályok azonban tartalmaznak kódot. Ne feledje, hogy a VB .NET-ben nincsenek interfészek. Minden példány olyan típus, amely megvalósítja az interfészt, de maga nem az interfész példánya. (Ettől a ponttól kezdve az osztályok megbeszélését egy másik időre hagyjuk, és csak az interfészekre összpontosítunk.)
implementáló interfészek
feltételezve, hogy van egy aninterface nevű interfészünk, csak metódusdeklarációkat adhatunk hozzá az interfészhez. Az interfész kiterjesztése az előző szakaszból, hozzáadhatunk egy whoami nevű módszert. Az eredmény a következő.
Public Interface AnInterface Function WhoAmI() As StringEnd Interface
minden típusnak, amely megvalósítja az AnInterface interfészt, az adott interfészen belül minden deklarált metódust végre kell hajtania. Ebben a példában csak a whoami funkciót kell végrehajtanunk. Tegyük fel, hogy az AClass megvalósítja az Interface-t; meg kell valósítanunk a WhoAmI-t. Az eredmény végre AnInterface AClass hozná a következő kódot.
Public Class AClass Implements AnInterface Public Function WhoAmI() As String Implements AnInterface.WhoAmI Return "AClass" End FunctionEnd Class
az első dolog, amit meg kell tennünk, jelezzük, hogy az interfészt név szerint szeretnénk megvalósítani. Megvalósítja AnInterface azt mondja a fogyasztóknak, hogy AClass fogja végrehajtani az összes leírt módszerek AnInterface. (A Visual Studio. Net IDE emlékeztet minket arra, hogy ezt is meg kell tennünk.)
a VB6 és a VB közötti különbség .NET az, hogy hozzá kell adnunk az Implements záradékot a függvénytesthez, amint az a felsorolásban látható. A függvény normálisnak van nyilvánítva, de a záradék Egyinterfészt valósít meg.A WhoAmI befejezi az osztály és az interfész közötti szerződést.
záró gondolatok
a struktúrák interfészeket valósíthatnak meg VB.NET is. Függetlenül attól, hogy egy osztály vagy egy struktúra implementál egy interfészt, szüksége lesz az Implements utasításra a bemutatott módon, és az interfészben definiált minden metódust végre kell hajtania az Implements záradék használatával az eljárás fejlécének végén annak jelzésére, hogy egy adott metódus megfelel egy adott interfészmódszernek.
az interfészek lehetnek nagyon rövidek vagy nagyon hosszúak. Az interfész által leírt módszerek lehetnek szubrutinok vagy függvények, és lehetnek olyan bonyolultak vagy egyszerűek, amennyire szükség van rájuk. Egy módszer egynél több interfészmódszert valósíthat meg. Végül ne feledje, hogy az interfész módszerek meghívhatók az objektumra való hivatkozással vagy az interfészre való hivatkozással.
A szerzőről
Paul Kimmel szabadúszó író Developer.com és CodeGuru.com. keresse hűvös Visual Basic. Net témák az ő közelgő könyv Visual Basic. Net Unleashed elérhető 2002 januárjában.
Paul megalapította a Software Conceptions, Inc. – t. 1990-ben. Lépjen kapcsolatba Paul Kimmel-rel a súgóépítéshez VB.NET alkalmazások vagy áttelepítése VB6 alkalmazások. NET.
# # #