Die Methodennamen in C# werden nicht auf der Grundlage
der Methodensignatur verborgen, sondern auf den Namen der Methode !!!
***********************************************************
using System; public class ErsteKlasse { public int Funktion(int val) { Console.WriteLine("Klasse1.Funktion - {0}", val); } } public class ZweiteKlasse:ErsteKlasse { public int Funktion(string val) { Console.WriteLine("Klasse2.Funktion - {0}", val); } } class TestKlasse { public static void Main() { ZweiteKlasse KL2 = new ZweiteKlass(); KL2.Funktion("Das funktioniert"); KL2.Funktion(7); // Hier tritt ein Fehler auf !!! // Was muss ich jetzt machen ??? ((ErsteKlasse) KL2).Funktion(7); // jetzt gehts !!! } } |
*********************************************************************
Was ist passiert ?
Die beiden Funktionen >>Funktion(int val), Funtion(string val)<< befinden sich in unterschiedlichen
Klassen.
Die in der abgeleiteten Klasse >>ZweiteKlasse<< definierte Funktion >>Funktion()<< wird in der
BasisKlasse >>ErsteKlasse<< an allen Stellen ausgeblendet.
Eine (wenn nötige) Lösung wäre die Überladung.