Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CLASSE ABSTRAITE


Information sur la source

Catégorie :Tutoriaux Source .NET ( DotNet ) Classé sous : abstraite, abstract Niveau : Débutant Date de création : 02/04/2003 Date de mise à jour : 02/04/2003 22:36:44 Vu : 13 104

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

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

  • 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.");
  • }
  • }
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.
 

Commentaires et avis

signaler à un administrateur
Commentaire de gg00xiv le 02/04/2003 23:07:28

c rapide, concis, et comprehensible ...

signaler à un administrateur
Commentaire de TheSaib le 03/04/2003 01:27:20 administrateur CS

Ca explique bien mais tu ne montres pas l'interer d'utiliser l'abstraction.

TheSaib

signaler à un administrateur
Commentaire de superpa le 03/04/2003 12:42:54

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

signaler à un administrateur
Commentaire de gg00xiv le 03/04/2003 23:54:31

une interface ne peut en aucun cas contenir de champs, c'est bien la le problème

signaler à un administrateur
Commentaire de TheSaib le 04/04/2003 00:16:45 administrateur CS

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.


signaler à un administrateur
Commentaire de TheSaib le 04/04/2003 00:20:40 administrateur CS

Enfin vous ni tort ni raison , mais les attributs sont des bon comprimis pour declarer des "champs" dans des interfaces.

signaler à un administrateur
Commentaire de gg00xiv le 04/04/2003 23:12:42

erf, oui les propriétés ... je faisais références aux variables ou constantes ...

signaler à un administrateur
Commentaire de TheSaib le 05/04/2003 13:47:01 administrateur CS

oui je sais , c'est pour çà que je disait que c'etait un bon compromis :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Fenêtre abstraite [ par OlivierM ] Bonjour à tousJ'ai créé une fenêtre abstraite. Le problème est que les fenêtres qui héritent, en mode "design", cherche à instancier la fenêtre parent classe static dans classe static [ par linx20 ] Voila en gros je veux inclure une classe static ds mon autre classe static : public abstract class MaClasseStatic1{public static MaClasseStatic2 st2;/ instanciation IWebBrowser2 [ par netTPH ] Salut !je n'arrive pas à créer un objet IWebBrowser2...je viens à peine de me mettre en c# donc, j'ai surement écrit une bêtise quelconque Voilà le co Abstract et forms [ par RMI ] Bonjour, J'utilise une windows form abstraite (Form1), le probl&#232;me le desidner de VS2003 ne peut pas m'afficher&nbsp; les form d&#233;riv&#233;e Dérivation de classe abstraite [ par yoh_777 ] Je voudrais simplement dériver une classe abstraite ayant un constructeur comportant un paramètre.  Voici mon programme  <div style="border: 1pt d Problème de méthode abstract [C#] [ par therainbow3 ] Bonjour, J'ai créé une classe mère contenant une méthode abstract qui va être utiliser par la suite par les classes filles. Ces classes filles retourn Sérialiser une classe dérivée avec une propriété redéfinie. [ par EmacLi ] Bonjour,J'ai une classe B qui dérive d'une classe A. J'ai ajouté à une propriété de la classe B le mot clé "new" pour la redéfinir (nom de la prop. id Interface ou classe abstraite? [ par Kite37 ] Bonjour,Je suis en pleine migration VB.NET / C# et quelques chose m'interpelle un peu.En effet, dans les ouvrages que j'ai (et sur de nombreuses référ


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.