Nous le faisons pour le polymorphisme d'exécution. Lorsque nous devons appeler une méthode de classe dérivée, mais quelle classe dérivée doit être appelée dépend de l'exécution basée sur l'entrée de l'utilisateur. Ceci est un exemple très simple:
static void Main(string[] args)
{
List<Shape> shapes = new List<Shape>();
shapes.Add(new Circle());
shapes.Add(new Square());
shapes.Add(new Rectangle());
foreach (Shape s in shapes)
s.Draw();
Console.Read();
}
public class Shape
{
public virtual void Draw() { }
}
public class Square : Shape
{
public override void Draw()
{
// Code to draw square
Console.WriteLine("Drawing a square");
}
}
public class Circle : Shape
{
public override void Draw()
{
// Code to draw circle
Console.WriteLine("Drawing a circle");
}
}
public class Rectangle : Shape
{
public override void Draw()
{
// Code to draw circle
Console.WriteLine("Drawing a rectangle");
}
}
*****Output:
Drawing a circle
Drawing a square
Drawing a rectangle*****
Dans le scénario pratique peut-être l'utilisateur détermine à l'exécution dont la forme qu'il veut dessiner. Donc, lors de l'implémentation, vous devez créer un objet de la classe Shape, et lui assigner un cercle, un rectangle ou un carré en fonction de la sélection de l'utilisateur (dans un commutateur ou if-else). Et lorsque vous appelez Shape.Draw(), il appelle la méthode de classe dérivée appropriée.
Pouvez-vous être plus élaboré? – Rohit
Vous devez être plus clair sur votre question si vous voulez des réponses plus spécifiques qu'un paragraphe d'un tutoriel OO. – mquander
Ceci est une copie d'environ 50 questions sur StackOverflow, par exemple: http: // stackoverflow.com/questions/154577/polymorphisme-vs-overriding-vs-surcharge et http://stackoverflow.com/questions/778888/which-oo-concept-is-this-a-example-of et un qui a été demandé récemment (mais je ne peux pas le trouver). Voter pour fermer. – Cerebrus