Classe abstraite

Soyez le premier à donner votre avis sur cette source.

Snippet vu 20 076 fois - Téléchargée 30 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

gg00xiv
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
11 -
c rapide, concis, et comprehensible ...
TheSaib
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
12 -
Ca explique bien mais tu ne montres pas l'interer d'utiliser l'abstraction.

TheSaib
superpa
Messages postés
113
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
5 janvier 2004
-
Juste une précision:
Dans une interface on peut déclarer des variables et des constantes.
Alors quelle est la différence entre une classe abstraite et une interface?

Dans une interface, toutes les méthodes sont abstraites tandis qu'une classe peut contenir certaines méthodes non vides. De plus, une classe ne peut dériver d'au maximum une autre classe tandis qu'elle peut implémenter plusieurs interfaces.

Sinon, c'est vrai que c'est bien fait.
J'espère avoir été clair,
P-A
gg00xiv
Messages postés
656
Date d'inscription
mercredi 22 août 2001
Statut
Membre
Dernière intervention
11 mars 2005
11 -
une interface ne peut en aucun cas contenir de champs, c'est bien la le problème
TheSaib
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
12 -
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.

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.