Créer de la classe héritée de la classe de base

public class Car 
{ 
    private string make;
    private string model;
    public Car(string make, string model)
    {
         this.make = make;
         this.model = model;
    }
    public virtual void Display()
    {
       Console.WriteLine("Make: {0}", make);
       Console.WriteLine("Model: {0}", model);
    }
    public string Make
    {
       get{return make;}
       set{make = value;}
    }
    public string Model
    {
       get{return model;}
       set{model = value;}
    }
}

public class SuperCar:Car
{
    private Car car;
    private int horsePower;
    public SuperCar(Car car)
    {
        this.car = car;
    }
    public int HorsePower
    {
       get{return horsePower;}
       set{horsepower = value;}
    }
    public override void Display()
    {
       base.Display();
       Console.WriteLine("I am a super car");
}

Quand je fais quelque chose comme

Car myCar = new Car("Porsche", "911");
SuperCar mySupcar = new SuperCar(myCar);
mySupcar.Display();

Je ne reçois que "je suis une supercar", mais pas les propriétés de ma classe de base. Dois-je affecter explicitement les propriétés de ma classe de base dans la SuperCar du constructeur? En fait, je suis en train Décorateur modèle où je veux qu'une classe pour ajouter un comportement à une classe de base.

Pour Supercar être un vrai décorateur, déléguer l'ensemble de la Voiture de méthodes pour votre enveloppé voiture. On peut se demander si Décorateur est le bon modèle ici, d'autant que vous traitez avec des classes concrètes.
Supposons que vous renommez Voiture de Conteneur et de la SuperCar de la Boîte. Vous dites "une Boîte est Une sorte de Récipient (car il hérite de Conteneur) et chaque Boîte contient un Conteneur (parce qu'il faut un conteneur dans son constructeur et l'enregistre dans un champ)". Est-ce réellement ce que vous voulez de modèle? Pourquoi une boîte contient un conteneur? Pourquoi une SuperCar contiennent tous les deux une Voiture et d'être un genre de Voiture?

OriginalL'auteur Raj | 2010-05-20