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 commeCréer une classe héritée de la classe de base
Car myCar = new Car("Porsche", "911");
SuperCar mySupcar = new SuperCar(myCar);
mySupcar.Display();
Je ne reçois que « Je suis un 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 le constructeur SuperCar? En fait j'essaye le modèle de décorateur où je veux qu'une classe ajoute le comportement à une classe de base.
pour Supercar être un vrai décorateur, déléguer tout o f Les méthodes de la voiture à votre voiture enveloppée. Il est discutable si Décorateur est le bon modèle ici, d'autant plus que vous avez affaire à des classes concrètes. – mdma
Supposons que vous renommiez Car en Container et SuperCar en Box. Vous dites "Une boîte est une sorte de conteneur (parce qu'elle hérite de conteneur) et chaque boîte contient un conteneur (parce qu'il prend un conteneur dans son constructeur et l'enregistre dans un champ)". Est-ce réellement ce que vous voulez modéliser? Pourquoi une boîte devrait contenir un conteneur? Pourquoi une SuperCar devrait-elle contenir une voiture et être une sorte de voiture? –