Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

C Sharp – Abstraite

Programmation en C# (C Sharp)



Si une classe contient au moins une méthode abstract, elle doit impérativement être déclarée en classe abstract elle-même en utilisant le mot clef abstract devant sa déclaration.

Une classe abstract ne peut pas être instanciée directement, seule une classe dérivée (sous-classe) qui redéfinit obligatoirement toutes les méthodes abstract de la classe mère peut être instanciée.

Une classe abstract peut contenir des méthodes non abstraites et donc implantées dans la classe.

Une classe abstract peut même ne pas contenir du tout de méthodes abstraites, dans ce cas une classe fille n’a pas la nécessité de redéfinir les méthodes de la classe mère pour être instanciée.

Exemple :

abstract class Etre_Vivant  // classe abstraite non instanciable
{
      public abstract void SeDeplacer( );
     //.....mode de déplacement abstrait
}
class Serpent : Etre_Vivant // classe concrète instanciable
{
    public override void SeDeplacer( )
    { //.....concrètement en rampant }
}
class Oiseau : Etre_Vivant // classe concrète instanciable
{
    public override void SeDeplacer( )
    { //.....concrètement en volant }
}



using System;

abstract class clA 
{
public string nom="inconnu";
public int code=999;

public abstract int nombreLettres( ); // méthode abstraite implicitement virtuelle 

public void changerNom(string newNom)
{
nom=newNom;
code = nombreLettres( )*100; // appel à la méthode abstraite
}
}

class clB : clA
{
public override int nombreLettres( ) // implantation par redéfinition virtuelle de la méthode abstraite
{
return this.nom.Length;
}
}

class Exercice
{
public static void Main(string[ ] args) // méthode principale de lancement de l'exécution
{
clB  x  = new clB( );
Console.WriteLine( "x.nom = {0}, nbr lettres = {1}, code = {2}", x.nom, x.nombreLettres( ), x.code ); 

x.changerNom("Shakespeare");
Console.WriteLine( "x.nom = {0}, nbr lettres = {1}, code = {2}", x.nom, x.nombreLettres( ), x.code ); 

Console.ReadLine();
}
}



Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More