Ich bin dabei, meinen Code zu faktorisieren. Ich habe eine Auto-Klasse als Basisklasse. Ausziehende Autoklasse sind SUV und Limousine. Möglicherweise werde ich viel mehr Arten von Autos hinzufügen müssen. Sie werden alle dieselbe Run-Methode haben. Ich frage mich, ob es möglich ist, die Run-Methode aus allen abgeleiteten Klassen zu entfernen und die Run-Methode in der Klasse Car beizubehalten, die auf die in den abgeleiteten Klassen erzeugte Zündung verweist. Unten ist der vereinfachte Code. Außerdem sollte die Zündung nur einmal erzeugt werden.Zugriff Unterklasse Methode und Attribut von Basisklasse
public abstract class Car
{
static Ignition ignition;
static void Start(){ ignition = A;}
public void Run(){
using(ignition){
Start{};
}
}
}
public class Sedan : Car
{
static Ignition ignition;
static void Start(){ ignition = B;}
public void Run(){
using(ignition){
Start{};
}
}
}
public class SUV : Car
{
static Ignition ignition;
static void Start(){ ignition = C;}
public void Run(){
using(ignition){
Start{};
}
}
}
Warum sind 'Ignition' und' 'Starten' static'? –
Sie verwenden 'using' nicht, wie es entworfen wurde. 'using' wird im wesentlichen zu einem' try {new ignition(); } finally {ignition.Dispose(); } 'und' Ignition' (der zugrunde liegende Typ) müssen die IDisposable-Schnittstelle implementieren. Daher ist es schwer zu sagen, was Sie hier erreichen wollen. –
Die Zündung ist statisch, weil ich versucht habe sicherzustellen, dass nur eine Instanz für alle Instanzen jedes Autotyps erstellt wird. – eriflame