IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

hum un héritage mal vécu


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 116
    Points : 63
    Points
    63
    Par défaut hum un héritage mal vécu
    Voilà j'ai utilisé dans un projet java ce genre de joyeuseté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    interface IAffichable
    {
        void Afficher(String msg);
    }
     
    abstract class Ecran implements IAffichable
    {}
     
    class Truc extends Ecran
    {
        public void Afficher(String msg)
        {
            System.out.println(msg);
        }
    }
    De mémoire et java me l'a confirmer ce sont les classes dérivant de la classe abstraite qui doivent implémenter les méthodes de l'interface, même si la classe abstraite peut elle aussi implémenter les méthodes de cette interface, bon ca fonctionne nickel, mais voilà où ca devient marrant on m'a demandé un portage du code en c#, donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    interface IAffichable
    {
        void Afficher(string msg);
    }
     
    abstract class Ecran:IAffichable
    {}
     
    class Truc:Ecran
    {
        public void Afficher(String msg)
        {
            Console.Writeline(msg);
        }
    }
    par contre là ca ne compile plus il me demande à ce que la classe abstraite implémente obligatoirement les méthode de l'interface, C# aurait-il oublié cet élément de la POO ?

    Merci de votre aide, car là je ne comprends pas ...

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    je ne connais pas les mots clés de c# mais en vb.net il faut déclarer la méthode en mustoverride sur la classe abstraite (donc sans code à l'intérieur)
    et overrider dans la classe fille
    au final ca fait ce que tu veux quand meme

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    on peut l'écrire comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
        public interface IAffichable
        {
            void Afficher(string msg);
        }
     
        public abstract  class Ecran:IAffichable
        {
            public abstract void Afficher(string msg);
        }
     
        public class Truc:Ecran
        {
            public override void Afficher(string msg)
            {
                Console.WriteLine(msg);
            }
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                var c = new Truc();
                c.Afficher("coucou");
            }
        }
    Mais je ne trouve pas ca beau, existe-t'il une manière plus élégante ?

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    non c'est bien ca le principe ... pas moyen de faire plus joli ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 116
    Points : 63
    Points
    63
    Par défaut
    ok merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Postgres] Héritage + Clés
    Par k-reen dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 21/05/2003, 16h37
  2. Hum XMLRad RC2 deja des problèmes ?!
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 25/02/2003, 12h23
  3. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo