Variable andere Klasse zuweisen
-
Hallo zusammen,
ich komm mal gleich zur Sache. In meinem Projekt habe ich 6 Objekte die von einem Objekt Schiff erben. Nun möchte ich die 6 Objekte nicht alle einzeln instanzieren. Damit meine ich das ich gerne eine Variable einem Objekt zuordnen möchte und bei Bedarf einfach dieser Variable eines der anderen Objekte zuweise.
Das hat denn Sinn das ich eine Variable im Quellcode verwenden kann mit 6 Objekten die sich sehr stark ähneln.
Zuerst dachte ich das wäre mit dem Typ Object möglich, aber das führte leider nicht zum gewünschten Erfolg.
Hier ein Bespiel wie ichs gerne hätte
Variable i = new Object1; i.irgendetwas(); Variable i = new Object2; i.irgendetwas(); i.nochwasanderes();
-
Hi
class Program { class Base { public virtual void irgendwas() {} } class Derived1 : Base { public override void irgendwas() {} } class Derived2 : Base { public override void irgendwas() {} public void nochwasanderes() { } } static void Main(string[] args) { Base b = new Derived1(); b.irgendwas(); b = new Derived2(); b.irgendwas(); b.nochwasanderes(); //nope } }
Alternativ mit abstrakter Basisklasse oder einem Interface. Zugreifen kannst Du über die Basisklassenreferenz natürlich nicht auf Methoden, die nur in abgeleiteten Klassen definiert sind (nochwasanderes()). Deshalb hat auch Dein Ansatz mit object nicht funktioniert bzw Du hättest einen Downcast durchführen müssen (i.d.R. nicht gut!).
Bin mir nicht sicher, ob das wirklich so toll ist was Du da vor hast.
-
Eigentlich unterscheiden sich die Objekte nur von den Memberwerten. Da sie vom Objekt Schiff erben können sie eigentlich alle das selbe, aber die Werte sind halt anders. Wie zum Bespiel der Name und die Größe des Laderaumes.
-
Aber dann brauchst Du doch nicht verschiedene Klassen für die Objekte. Es reicht eine Schiffsklasse die mit den jeweils richtigen Werten initialisiert wird.
-
Ich dachte das ich das mit der Vererbung mal ausprobiere, da ich noch nicht lange programmiere :).
Zum einen können das später recht viele Werte sein die initialisiert werden müssen. So hätte ich das voneinander getrennt um einen Überblick zu haben. Hatte auch vorher alles in einer Klasse nur fand ich es irgendwann unübersichtlich.
-
Bennisen schrieb:
Ich dachte das ich das mit der Vererbung mal ausprobiere, da ich noch nicht lange programmiere :).
Zum einen können das später recht viele Werte sein die initialisiert werden müssen. So hätte ich das voneinander getrennt um einen Überblick zu haben. Hatte auch vorher alles in einer Klasse nur fand ich es irgendwann unübersichtlich.
Das widerspricht aber der Idee der Vererbung. Wie µ schon sagte reicht es da eine Schiffsklasse zu basteln und die nur mit richtigen Werten zu fuellen.
Wenn du Vererbung ueben willst, dann mach das lieber an einem konkreten und sinnvolleren Beispiel. Die Gefahr die jetzt naemlich besteht ist, dass du die Verwendung komplett falsch uebst und verinnerlichst und spaeter immer wieder falsch anwendest.