Školení
Modul
Implementace dědičnosti tříd - Training
Zjistěte, jak vytvořit hierarchii tříd pomocí základních a odvozených tříd a jak skrýt nebo přepsat členy odvozené třídy pomocí klíčových slov "new", "virtual", "abstract" a "override".
Tento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Třídy jazyka Visual Basic lze odvodit z Public
tříd v objektech MODELU COM, a to i ty, které byly vytvořeny v dřívějších verzích jazyka Visual Basic. Vlastnosti a metody tříd zděděných z objektů MODELU COM lze přepsat nebo přetížit stejně jako vlastnosti a metody jakékoli jiné základní třídy lze přepsat nebo přetížit. Dědičnost z objektů MODELU COM je užitečná, pokud máte existující knihovnu tříd, kterou nechcete překompilovat.
Následující postup ukazuje, jak pomocí jazyka Visual Basic 6.0 vytvořit objekt COM, který obsahuje třídu, a pak jej použít jako základní třídu.
Poznámka
Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí.
V jazyce Visual Basic 6.0 otevřete nový projekt knihovny DLL technologie ActiveX. Vytvoří se projekt s názvem Project1
. Má třídu s názvem Class1
.
V Průzkumníku projektů klepněte pravým tlačítkem myši Project1 a potom klepněte na tlačítko Vlastnosti Aplikace Project1. Zobrazí se dialogové okno Vlastnosti projektu.
Na kartě Obecné v dialogovém okně Vlastnosti projektu změňte název projektu zadáním ComObject1
do pole Název projektu.
V Průzkumníku projektů klepněte pravým tlačítkem myši Class1
a potom klepněte na příkaz Vlastnosti. Zobrazí se okno Vlastnosti pro třídu.
Name
Změňte vlastnost na MathFunctions
.
V Průzkumníku projektů klepněte pravým tlačítkem myši MathFunctions
a klepněte na příkaz Zobrazit kód. Zobrazí se Editor kódu.
Přidejte místní proměnnou pro uložení hodnoty vlastnosti:
' Local variable to hold property value
Private mvarProp1 As Integer
Přidat procedury vlastností Let
a Get
vlastností:
Public Property Let Prop1(ByVal vData As Integer)
'Used when assigning a value to the property.
mvarProp1 = vData
End Property
Public Property Get Prop1() As Integer
'Used when retrieving a property's value.
Prop1 = mvarProp1
End Property
Přidání funkce:
Function AddNumbers(
ByVal SomeNumber As Integer,
ByVal AnotherNumber As Integer) As Integer
AddNumbers = SomeNumber + AnotherNumber
End Function
Vytvořte a zaregistrujte objekt COM kliknutím na Vytvořit ComObject1.dll v nabídce Soubor .
Poznámka
Ačkoli můžete také zveřejnit třídu vytvořenou pomocí jazyka Visual Basic jako objekt COM, nejedná se o skutečný objekt MODELU COM a nelze jej použít v tomto návodu. Podrobnosti naleznete v tématu Interoperabilita modelu COM v aplikacích rozhraní .NET Framework.
V následujícím postupu vytvoříte sestavení vzájemné spolupráce, které funguje jako most mezi nespravovaným kódem (například objektem COM) a spravovaným kódem, který Visual Studio používá. Sestavení vzájemné spolupráce, které Visual Basic vytváří, zpracovává mnoho podrobností o práci s objekty MODELU COM, jako je například zařazování zprostředkovatele, proces balení parametrů a vrácení hodnot do ekvivalentních datových typů při přechodu na a z objektů MODELU COM. Odkaz v aplikaci jazyka Visual Basic odkazuje na sestavení vzájemné spolupráce, nikoli na skutečný objekt COM.
Otevřete nový projekt aplikace pro Windows jazyka Visual Basic.
V nabídce Projekt klepněte na tlačítko Přidat odkaz.
Zobrazí se dialogové okno Přidat odkaz .
Na kartě COM poklikejte ComObject1
v seznamu Název komponenty a klepněte na tlačítko OK.
V nabídce Projekt klepněte na tlačítko Přidat novou položku.
Zobrazí se dialogové okno Přidat novou položku .
V podokně Šablony klepněte na položku Třída.
Výchozí název Class1.vb
souboru se zobrazí v poli Název . Změňte toto pole na MathClass.vb a klikněte na Přidat. Tím se vytvoří pojmenovaná MathClass
třída a zobrazí se jeho kód.
Do horní části MathClass
třídy COM přidejte následující kód, který dědí z třídy COM.
' The inherited class is called MathFunctions in the base class,
' but the interop assembly appends the word Class to the name.
Inherits ComObject1.MathFunctionsClass
Přetěžte veřejnou metodu základní třídy přidáním následujícího kódu do MathClass
:
' This method overloads the method AddNumbers from the base class.
Overloads Function AddNumbers(
ByVal SomeNumber As Integer,
ByVal AnotherNumber As Integer) As Integer
Return SomeNumber + AnotherNumber
End Function
Rozšiřte zděděnou třídu přidáním následujícího kódu do MathClass
:
' The following function extends the inherited class.
Function SubtractNumbers(
ByVal SomeNumber As Integer,
ByVal AnotherNumber As Integer) As Integer
Return AnotherNumber - SomeNumber
End Function
Nová třída dědí vlastnosti základní třídy v objektu COM, přetíží metodu a definuje novou metodu pro rozšíření třídy.
Přidejte tlačítko do spouštěcího formuláře a poklikáním na něj zobrazte jeho kód.
V obslužné Click
rutině události tlačítka přidejte následující kód pro vytvoření instance MathClass
a volání přetížených metod:
Dim Result1 As Short
Dim Result2 As Integer
Dim Result3 As Integer
Dim MathObject As New MathClass
Result1 = MathObject.AddNumbers(4S, 2S) ' Add two Shorts.
Result2 = MathObject.AddNumbers(4, 2) 'Add two Integers.
Result3 = MathObject.SubtractNumbers(2, 4) ' Subtract 2 from 4.
MathObject.Prop1 = 6 ' Set an inherited property.
MsgBox("Calling the AddNumbers method in the base class " &
"using Short type numbers 4 and 2 = " & Result1)
MsgBox("Calling the overloaded AddNumbers method using " &
"Integer type numbers 4 and 2 = " & Result2)
MsgBox("Calling the SubtractNumbers method " &
"subtracting 2 from 4 = " & Result3)
MsgBox("The value of the inherited property is " &
MathObject.Prop1)
Spusťte projekt stisknutím klávesy F5.
Když kliknete na tlačítko ve formuláři, AddNumbers
metoda je nejprve volána s Short
čísly datových typů a Visual Basic zvolí příslušnou metodu ze základní třídy. Druhé volání AddNumbers
je směrováno na metodu přetížení z MathClass
. Třetí volání volá metodu SubtractNumbers
, která rozšiřuje třídu. Vlastnost v základní třídě je nastavena a hodnota je zobrazena.
Možná jste si všimli, že přetížená AddNumbers
funkce má stejný datový typ jako metoda zděděná ze základní třídy objektu COM. Důvodem je to, že argumenty a parametry metody základní třídy jsou definovány jako 16bitové celé číslo v jazyce Visual Basic 6.0, ale jsou vystaveny jako 16bitové celá čísla typu Short
v novějších verzích jazyka Visual Basic. Nová funkce přijímá 32bitové celá čísla a přetěžuje funkci základní třídy.
Při práci s objekty MODELU COM ověřte velikost a datové typy parametrů. Pokud například používáte objekt MODELU COM, který přijímá objekt kolekce jazyka Visual Basic 6.0 jako argument, nelze poskytnout kolekci z novější verze jazyka Visual Basic.
Vlastnosti a metody zděděné z tříd MODELU COM lze přepsat, což znamená, že můžete deklarovat místní vlastnost nebo metodu, která nahrazuje vlastnost nebo metodu zděděnou ze základní třídy MODELU COM. Pravidla pro přepsání zděděných vlastností modelu COM jsou podobná pravidlům pro přepsání jiných vlastností a metod s následujícími výjimkami:
Pokud přepíšete jakoukoli vlastnost nebo metodu zděděnou z třídy COM, musíte přepsat všechny ostatní zděděné vlastnosti a metody.
Vlastnosti, které používají ByRef
parametry, nelze přepsat.
Zpětná vazba k produktu .NET
.NET je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Školení
Modul
Implementace dědičnosti tříd - Training
Zjistěte, jak vytvořit hierarchii tříd pomocí základních a odvozených tříd a jak skrýt nebo přepsat členy odvozené třídy pomocí klíčových slov "new", "virtual", "abstract" a "override".