German Initialize "überschreiben"

Kiffi

Well-Known Member
Licensed User
Longtime User
Hallo,

ich weiß: B4J unterstützt kein richtiges Überschreiben von Methoden und leider auch keine optionalen Methodenparameter, aber ich möchte gerne in einer selbst geschriebenen Klasse die Initialize-Methode "überschreiben", sprich: ein Initialize2 nutzen.

B4X:
Public Sub Initialize(P1 As String)
 ' [...]
End Sub

Public Sub Initialize2(P1 As String, P2 As String)
 ' [...]
End Sub

Damit die Klasse richtig initialisiert wird, müsste ich jetzt doch von Initialize2 das 'richtige' Initialize() aufrufen, oder? Wenn ja: Wie mache ich das?

Stellenweise habe ich als Lösungsvorschlag gelesen, die Übergabe von Parametern in Form einer List oder Map zu realisieren. Doch das fände ich jetzt nicht so dolle.

Danke im Voraus & Grüße ... Peter
 

MarkusR

Well-Known Member
Licensed User
Longtime User
wenn es nicht erkannt wird dann mußte bestimmt mit
Initialize das Objekt erstmal erstellen und dann eine Funktion aufrufen die halt irgendwas macht.
Sowas wie
B4X:
Dim m As MeineKlasse
    m.Initialize()
    m.Initialize2("","") <- kann man hier dann ja auch einen sinnvollen namen nehmen
    m.Test

oder Du machst dir eine Funktion mit Parametern welche dir das Objekt so erstellt und zurück gibt wie du möchtest.
B4X:
Dim m As MeineKlasse
m = MachWasNeues("1","2")

Sub MachWasNeues(p1 As String,p2 As String) As MeineKlasse
  
    Dim m As MeineKlasse
    m.Initialize()
  
    m.p1=p1
    m.p2=p2
  
  
    Return m
  
End Sub
 

Kiffi

Well-Known Member
Licensed User
Longtime User
Hallo Markus,

vielen Dank für Deinen Tipp und Sorry für die späte Rückmeldung. Ich musste mir Deinen Vorschlag erst einmal gründlich durch den Kopf gehen lassen.

Wenn man -- wie ich -- eher aus der .NET-Ecke kommt, dann ist man ja recht verwöhnt, was die Klassen-Behandlung anbelangt. Aus diesem Grund finde ich die Vorgehensweise von B4X auch eher gewöhnungsbedürftig und teilweise unnötig umständlich.

Ich habe jetzt meinen Code so umorganisiert, dass ich auf ein Initialize2 weitestgehend verzichten kann.

Nochmals Danke & Grüße ... Peter
 

MarkusR

Well-Known Member
Licensed User
Longtime User
Jo, .Net hat Vor- und Nachteile.
 
D

Deleted member 103

Guest
Klassen nutze ich fast nie (auch nicht in .Net)
Das ist meiner Meinung nach sehr schlecht. :(
Wenn man mit Klassen umgehen kann, macht die Programmierung viel einfacher, in B4x und in .Net.
 

MarkusR

Well-Known Member
Licensed User
Longtime User
OT
Klassen nutze ich fast nie
Muß man auch ein Nutzen für haben.
Bei größeren Projekten oder schwierigen Aufgaben sind die sehr von Vorteil weil man zum Objekt direkt die passenden Funktionen hat aber auch interne Funktionen unterbringen kann.
Ein Beispiel wo ich Klassen vermißt habe war ein Partikel Emitter, in einer Sprache die keine Objekte nutzt.
 
Top