Sunray
Erfahrenes Mitglied
Sorry dass ich dafür n neues Thema öffne.
Ich habe eine Frage zu Vererbung und Objektinstanzen.
Ich bin gerade daran eine kleine Konsole für eine Anwendung zu programmieren und habe mir beim erstellen der Befehle gedacht: "Halt, wozu gibts denn Vererbung?"
Also Basisklasse "Command" erstellt:
Dann erstelle ich eine neue Klasse, die von "Command" erben soll:
Visual Studio .NET erklärt diesen Code für richtig. (was aber ja noch lange nicht heisst...)
Compilieren: keine Probleme
Ausführen: Ich erhalte eine Ausnahme, die berühmte NullReferenceException.
Das heisst doch, dass ich mit einem Objekt arbeiten will, das noch gar nicht instanziert wurde oder?
Müsste diese Ausnahme dann nicht immer erscheinen wenn man das macht:
Hier greift man ja auch auf ein Objekt zu, das noch nicht instanziert wurde.
Wie soll ich jetzt in der Basisklasse eine Datentyp "Parameter"-Array erstellen, wenn ich dann doch nicht darauf zugreifen kann, um sie in den vererbten Klassen als
zu definieren.
Danke für jede Antwort
Ich habe eine Frage zu Vererbung und Objektinstanzen.
Ich bin gerade daran eine kleine Konsole für eine Anwendung zu programmieren und habe mir beim erstellen der Befehle gedacht: "Halt, wozu gibts denn Vererbung?"
Also Basisklasse "Command" erstellt:
Code:
Public MustInherit Class Command 'Befehle
Public Name As String 'Name des Befehls
Public intParameter As Integer 'Anzahl Parameter
Public Beschreibung As String 'Beschreibung
Public Console As ConsoleControl = MainWindow.Console 'ConsolenControl
Public Parameter() As Parameter
MustOverride Sub runCmd()
[usw...]
End Class
Code:
Public Class CMDecho
Inherits Command
Sub New(ByVal PName As String)
Parameter(0) = New Parameter("output", "")
intParameter = 1
Name = PName
Beschreibung = "Gibt Parameter [" & Parameter(0).Name & "] in der Konsole aus"
End Sub
Overrides Sub runCmd() 'führt Befehl aus
Console.AddLine(Parameter(0).Value)
End Sub
End Class
Compilieren: keine Probleme
Ausführen: Ich erhalte eine Ausnahme, die berühmte NullReferenceException.
Das heisst doch, dass ich mit einem Objekt arbeiten will, das noch gar nicht instanziert wurde oder?
Müsste diese Ausnahme dann nicht immer erscheinen wenn man das macht:
Code:
Dim Test as String
Test = "Hello World"
Wie soll ich jetzt in der Basisklasse eine Datentyp "Parameter"-Array erstellen, wenn ich dann doch nicht darauf zugreifen kann, um sie in den vererbten Klassen als
Code:
Parameter(0) = new Parameter("name", "defaultwert")
Danke für jede Antwort