Vous créez un nouveau Dog
, mais vous le traitez en tant que Animal
.
Ceci est particulièrement utile lorsque vous souhaitez avoir un comportement qui est détenu ou exposé par le Animal
, mais le Dog
peut alors remplacer celui avec quelque chose de différent. Le Dog
peut être utilisé comme Dog
ou comme Animal
, parce que c'est les deux.
Edit: ici est un exemple rapide, et je vais utiliser une classe de base abstraite afin que vous puissiez voir la valeur réelle de cet arrangement:
public abstract class Animal
{
public abstract void Move();
public virtual void MakeSignatureSound()
{
Console.WriteLine("Ugggg");
}
}
public class Dog : Animal
{
public override void Move()
{
RunLikeAPuppy();
}
public override void MakeSignatureSound()
{
Console.WriteLine("Woof");
}
}
public class CaveMan : Animal
{
public override void Move()
{
RunLikeANeanderthal();
}
}
public class Cat : Animal
{
public override void Move()
{
RunLikeAKitteh();
}
public override void MakeSignatureSound()
{
Console.WriteLine("Meioww");
}
}
avis deux choses:
- trois dérivés de la classe
Animal
avaient pour passer outre la fonction Move()
, parce que dans ma classe de base i pris la décision que tous les animaux doivent avoir un Move()
, mais je n'ai pas précisé comment ils doivent se déplacer - qui est à l'animal de préciser
- la classe
CaveMan
ne l'emportait pas sur la fonction MakeSignatureSound()
, car il avait déjà été défini dans la classe de base et était suffisante pour lui
maintenant, si je fais ceci:
Animal caveman = new CaveMan();
Animal dog = new Dog();
caveman.MakeSignatureSound();
dog.MakeSignatureSound();
je vais obtenir ceci sur la console:
Ugggg
Woof
Mais parce que je l'ai utilisé une classe de base abstraite, je ne peux pas instancier une instance directement, je ne peux pas le faire:
Animal animal = new Animal();
En tant que développeur, je veux faire en sorte que lorsque les autres (ou moi-même) créer un nouveau Animal
, il doit être un type spécifique, pas seulement un Animal
pur qui n'avait aucun comportement ou caractéristiques.
Beau commentaire. Je veux dire la méthode prioritaire en sous-classe. Pourriez-vous s'il vous plaît écrire un exemple simple à ce sujet ici? – odiseh
Un grand merci à vous :) – odiseh