##EDIT: Sorry - mir fiel echt kein besserer Titel ein ...
Hallo!
Ich habe, grob vereinfacht dargestellt, folgende Klassenhierarchie:
Die Klassen 2,3 und 4 erweitern die Klasse 1 um Methoden und Properties.
Meine Deklaration und die Initiatlisierung lauten vereinfacht:
Ziel ist, dass ich mir in meinem Code im Standardfall keine Gedanken machen muss, ob meineKlasse vom Typ 2 oder 3 oder 4 ist - das kann sich zur Laufzeit ändern.
Um abzusichern, dass ich an bestimmten Stellen, an denen ich eine Methode aufrufe, die z. B. nur in Klasse 2 und 4, aber vor allem nicht in Klasse 1 implementiert sind, kapsele ich den Aufruf in folgende Abfrage:
	
	
	
Verständlicherweise wirft Compiler nun aber Warnungen in der zweiten Zeile, denn die Methode "methodeAusKlasse2und4" ist (s. Deklaration von "meineKlase" oben) nicht in Klasse1 bekannt. Casten kann ich aber nicht, da ja zwei Klassen die Methode "methodeAusKlasse2und4" implementieren ...
Wie kann ich dieses Problem wohl lösen? Nur auf "Klasse2" zu casten halte ich für denkbar, aber unelegant - gibt es einen besseren Weg?
									
									
								Hallo!
Ich habe, grob vereinfacht dargestellt, folgende Klassenhierarchie:
	
	
			Alles anzeigen
		
								
			
Die Klassen 2,3 und 4 erweitern die Klasse 1 um Methoden und Properties.
Meine Deklaration und die Initiatlisierung lauten vereinfacht:
Ziel ist, dass ich mir in meinem Code im Standardfall keine Gedanken machen muss, ob meineKlasse vom Typ 2 oder 3 oder 4 ist - das kann sich zur Laufzeit ändern.
Um abzusichern, dass ich an bestimmten Stellen, an denen ich eine Methode aufrufe, die z. B. nur in Klasse 2 und 4, aber vor allem nicht in Klasse 1 implementiert sind, kapsele ich den Aufruf in folgende Abfrage:
Verständlicherweise wirft Compiler nun aber Warnungen in der zweiten Zeile, denn die Methode "methodeAusKlasse2und4" ist (s. Deklaration von "meineKlase" oben) nicht in Klasse1 bekannt. Casten kann ich aber nicht, da ja zwei Klassen die Methode "methodeAusKlasse2und4" implementieren ...
Wie kann ich dieses Problem wohl lösen? Nur auf "Klasse2" zu casten halte ich für denkbar, aber unelegant - gibt es einen besseren Weg?

 
									



