implementace rozhraní ve VB. Net

jaký rozdíl může přinést rok nebo dva. Před dvěma a půl lety jsem si myslel, že budu psát knihu s názvem Visual Basic 7 Unleashed pro Sams. Dokončení závěrečných návrhů Sams Visual Basic. Net Unleashed mi připomíná, že se ve Visual Basic hodně změnilo.

abychom vám pomohli provést přechod co nejdůkladněji a co nejúplněji, já a další autoři a přispěvatelé píšeme hodně o threading, reflexi, assemblies, COM interop a delegátech. Ale když jsem nedávno zkoumal programovací předměty s přítelem, připomnělo mi, že existují vývojáři na všech úrovních, nejen na pokročilé úrovni. Abych byl co nejdůkladnější, pak, zkoumám pokročilá témata i pokročilejší témata. (Vítám i dotazy čtenářů a občas napíšu článek na základě několika dotazů.)

tento článek je k věci. V tomto článku budeme zkoumat rozhraní: jak je definovat a jak je implementovat.

myšlenka rozhraní není pro COM nová, ale ve Visual Basic 6 byla každá třída rozhraním COM. V Jazyce Visual Basic .NET každá třída je třída A rozhraní je rozhraní, ale ne rozhraní COM. Třídy existují po celá desetiletí a rozhraní nejsou jedinou kompetencí COM. Třída popisuje pole, vlastnosti, události a metody, které bude mít Typ. Rozhraní je spíše jako portál nebo příloha. Rozhraní říká, že typ implementuje tyto specifické metody, ale nedefinuje, co je typ. Například dům může mít okno, ale také auto. Typ, který implementuje otevřenou metodu, lze definovat jako něco, co má okno, ale typy mohou definovat auta, lodě, domy nebo duši.

Visual Basic 6 nepodporuje dědičnost nebo třídy v objektově orientovaném smyslu konstruktu. VB6 podporuje rozhraní COM. VB. NET na druhé straně podporuje třídy a rozhraní, takže mezi těmito dvěma idiomy muselo být provedeno rozlišení.

definování tříd a rozhraní v VB. Net

idiomy třídy a rozhraní používají při jejich definování velmi podobnou syntaxi. Následující příklad definuje prázdnou třídu ve VB. Net, následovanou prázdným rozhraním.

Public Class AClassEnd ClassPublic Interface AnInterfaceEnd Interface

třídy mohou obsahovat pole, vlastnosti, události a metody. Tyto prvky třídy, zvané členové, mohou mít modifikátory označující, že jsou veřejné, soukromé, chráněné, nebo přítel. Všichni členové deklarace rozhraní jsou veřejní a v důsledku toho nepotřebují ani nemohou mít modifikátory přístupu.

třídy obsahují kód; rozhraní ne. Třídy, které implementují rozhraní, však obsahují kód. Mějte na paměti, že ve VB .NET nejsou žádné instance rozhraní. Každá instance je typ, který implementuje rozhraní, ale sám o sobě není instancí rozhraní. (Od tohoto okamžiku ponecháme diskusi o třídách na jinou dobu a zaměříme se pouze na rozhraní.)

implementační rozhraní

za předpokladu, že máme rozhraní s názvem AnInterface, můžeme do tohoto rozhraní přidat pouze deklarace metod. Rozšířením rozhraní z předchozí části můžeme přidat metodu s názvem WhoAmI. Výsledek je zobrazen dále.

Public Interface AnInterface Function WhoAmI() As StringEnd Interface

všechny typy, které implementují rozhraní AnInterface, musí implementovat každou deklarovanou metodu v tomto rozhraní. V tomto příkladu stačí implementovat funkci WhoAmI. Předpokládejme, že AClass implementuje AnInterface; museli bychom implementovat WhoAmI. Výsledkem implementace AnInterface v AClass by byl následující kód.

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

první věc, kterou musíme udělat, je uvést, že chceme implementovat rozhraní podle názvu. Implementuje AnInterface říká spotřebitelům, že AClass bude implementovat všechny metody popsané v AnInterface. (Visual Studio. Net IDE nám připomíná, že to musíme udělat také.)

rozdíl mezi VB6 a VB .NET je, že musíme přidat klauzuli Implements do těla funkce, jak je uvedeno v seznamu. Funkce je deklarována jako normální, ale klauzule implementuje Anrozhraní.WhoAmI dokončí smlouvu mezi třídou a rozhraním.

Závěrečné myšlenky

struktury mohou implementovat rozhraní v VB.NET taky. Ať už třída nebo struktura implementuje rozhraní, budete potřebovat příkaz Implements, jak je ukázáno, a budete muset implementovat každou metodu definovanou v rozhraní pomocí klauzule Implements na konci záhlaví procedury, abyste naznačili, že konkrétní metoda splňuje konkrétní metodu rozhraní.

rozhraní mohou být velmi krátká nebo velmi dlouhá. Metody popsané rozhraním mohou být podprogramy nebo funkce a mohou být stejně komplikované nebo tak jednoduché, jak je potřebujete. Jedna metoda může implementovat více než jednu metodu rozhraní. Nakonec mějte na paměti, že metody rozhraní lze volat s odkazem na objekt nebo s odkazem na rozhraní.

o autorovi

Paul Kimmel je spisovatel na volné noze pro Developer.com a CodeGuru.com. podívejte se na skvělé Visual Basic. Net témata v jeho nadcházející knize Visual Basic. Net Unleashed k dispozici v lednu 2002.

Paul založil Software Conceptions, Inc. v roce 1990. Kontaktujte Paula Kimmela na adrese pro pomoc při budování VB.NET aplikace nebo migrace aplikací VB6 do. NET.

# # #

Write a Comment

Vaše e-mailová adresa nebude zveřejněna.