Classe abstraite

0/5 (8 avis)

Snippet vu 20 930 fois - Téléchargée 32 fois

Contenu du snippet

Le mot clé abstract sert à définir une méthode dans une classe qui sera obligatoirement implémentée dans une sous-classe (qui hérite de cette classe), sauf si cette classe est elle mème abstraite.
De plus, il est impossible d'instancier une classe abstraite.

Source / Exemple :


using System;

class ClassePrincipale : Object
{
   public static void Main()
   {
      ClasseTest test=new ClasseTest();
      test.Méthode2();
   }
}

/*

    • Une classe qui possède une méthode abstraite doit elle mème
    • être déclarée abstraite.
  • /
abstract class ClasseAbstraite { public void Méthode1() { } public abstract void Méthode2(); /*
    • Une sous-classe de "ClasseAbstraite" doit implémenter une
    • méthode "Méthode2", sans arguments et sans valeur de retour.
  • /
} class ClasseTest : ClasseAbstraite { public override void Méthode2() //override sert à indiquer une redéfinition de méthode. { Console.Out.WriteLine("Méthode2."); } }

Conclusion :


Si vous voulez qu'une sous classe implémente des méthodes sans d'autres membres(des variables,des constantes ...), utilisez les interfaces.

A voir également

Ajouter un commentaire Commentaires
TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 23
5 avril 2003 à 13:47
oui je sais , c'est pour çà que je disait que c'etait un bon compromis :)
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
4 avril 2003 à 23:12
erf, oui les propriétés ... je faisais références aux variables ou constantes ...
TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 23
4 avril 2003 à 00:20
Enfin vous ni tort ni raison , mais les attributs sont des bon comprimis pour declarer des "champs" dans des interfaces.
TheSaib Messages postés 2368 Date d'inscription mardi 17 avril 2001 Statut Modérateur Dernière intervention 26 décembre 2007 23
4 avril 2003 à 00:16
malheuresement elle peut :)
C'est bien là le truc cool :)
ces champs s'apellent des attributs :
exemple :
(dans l'interface)
IScenario Owner{get;set;}
(dans la classe qui l'implemente)
public IScenario Owner
{
get{return _owner;}
set{_owner=value;}
}

avec un champs :
private IScenario _owner;

Un attribut a besoin d'un champs :) mais un attribut peut etre definit dans une interface.
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
3 avril 2003 à 23:54
une interface ne peut en aucun cas contenir de champs, c'est bien la le problème
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.