Attribute von einer anderen Klasse verwenden

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von hyperlinx.

    hyperlinx schrieb:

    Ich möchte alle Attribute und Methoden der Klasse a auch in der Klasse b verwenden können

    Es wird nicht klarer ...

    Möchtest du, dass "B" sich wie eine ERWEITERUNG von "A" verhält (das wäre Vererbung, siehe oben), oder willst du AUS B auf Methoden einer INSTANZ von A zugreifen? Dann muss "B" diese Instanz "kennen", wobei es sich anbietet, dass B dann eine Eigenschaft hat, um eine beliebige Instanz von A zugewiesen zu bekommen.


    VB.NET-Quellcode

    1. Public Class A
    2. Public Property Size As Integer
    3. End Class
    4. Public Class B
    5. Inherits A
    6. End Class
    7. Public Class A2
    8. Public Property Size As Integer
    9. End Class
    10. Public Class B2
    11. Public Property VerweisA2 As A2
    12. Public Sub foo()
    13. _VerweisA2.Size = 5
    14. End Sub
    15. End Class
    Bestandsaufnahme:
    Du hast das Objekt var vom Typ der Klasse Class1 mit der standardmäßig parameterlosen Sub New erzeugt. Damit ist die Variable a des Objektes (wie in der Klasse vorgesehen=0)
    Die Ausgabe Variable a des Objektes var ist also 0
    Um diesen Wert zu ändern müßtest du vorher entweder die als public deklarierte Variable ändern (var.a=1) oder z.B. deine Methode meth() aufrufen, die das erledigt.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

    hyperlinx schrieb:

    Auch nach dem aufrufen der Methode meth(), ist der Wert der Variable "a" vom Modul1 aufgerufen immer noch 0.

    Das können wir jetzt leider schlecht nachvollziehen , da unser lieber Mike in all seiner Weisheit wohl offensichtlich meinte die letzten Posts löschen zu müssen. Wenn ich mich richtig an Deine Beschreibung erinnere, so glaube ich da allerdings nicht so ganz.

    Mach einen neuen Thread auf und poste Deine Frage nochmal.
    Hier nochmal der Code :)

    VB.NET-Quellcode

    1. Imports ConsoleApplication1
    2. Module Module1
    3. Dim _meth As New Class1
    4. Dim _var As New Class1
    5. Sub Main()
    6. _meth.meth()
    7. Console.Out.WriteLine(_var.a) ' <- Output ist nur "Hallo"
    8. Console.In.ReadLine()
    9. End Sub
    10. End Module


    VB.NET-Quellcode

    1. Imports ConsoleApplication1
    2. Public Class Class1
    3. Inherits Class2 ' <- Ist dies überhaupt notwendig?
    4. Public a As String = "Hallo"
    5. Public Sub meth()
    6. a = a & " " & b ' <- Resultat sollte "Hallo Welt!" sein.
    7. End Sub
    8. End Class


    VB.NET-Quellcode

    1. Imports ConsoleApplication1
    2. Public Class Class2
    3. Public b As String = "Welt!"
    4. End Class

    hyperlinx schrieb:

    Hier nochmal der Code

    hmm, das ist nicht Dein ursprünglicher Code.

    Hier müsstest Du vielleicht _meth.a() ausgeben - was meinst Du ? ;)

    _meth und _var sind unterschiedliche Instanzen der gleichen Klasse, daher wird durch den Aufruf _meth.meth() auch nur der Wert meth.a überschrieben.

    Was meinst Du mit Deinem Code-Kommentar Ist dies überhaupt notwendig, ich nahm an Du wolltest die Vererbung von 2 Klassen testen ? Und in diesem Fall ist dies so notwendig, da in der class1 direkt keine Variable b enthalten ist, somdern von Class2 geerbt wurde.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Kangaroo“ ()