How to use D-language polymorphism?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Feb 16 11:23:21 PST 2017


On 02/16/2017 11:09 AM, Jean Cesar wrote:
 > I have the following code in c++ using polymorphism how would I convert
 > D-language polymorphism?

import std.stdio;

class Mamifero {
     int idade;

     void somMamifero() {
         writeln("\n\tSom de mamifero.");
     }
}

class Boi: Mamifero
{
     override void somMamifero() const
     {
         writeln("\n\tMuu ..! Muu..!!");
     }
}

class Gato: Mamifero
{
     override void somMamifero() const
     {
         writeln("\n\tMiAu ..! MiAu..!!");
     }
}

class Porco: Mamifero
{
     override void somMamifero() const
     {
         writeln("\n\tOinc ..! Oinc..!!");
     }
}

class Cachorro: Mamifero
{
     override void somMamifero() const
     {
         writeln("\n\tAu ..! Au..!!");
     }
}

void main()
{
     Mamifero mamPtr;
     int op;
     while(op != 5)
     {
         write("\n\t(1) Boi" ~
               "\n\t(2) Gato" ~
               "\n\t(3) Porco" ~
               "\n\t(4) Cachorro" ~
               "\n\t(5) Sair" ~
               "\n\tDigite: ");
         readf(" %s", &op);
         switch(op)
         {
         case 1:{
             mamPtr = new Boi();
             mamPtr.somMamifero();
             break;
         }
         case 2:{
             mamPtr = new Gato();
             mamPtr.somMamifero();
             break;
         }
         case 3:{
             mamPtr = new Porco();
             mamPtr.somMamifero();
             break;
         }
         case 4:{
             mamPtr = new Cachorro();
             mamPtr.somMamifero();
             break;
         }
         case 5:{
             writeln("\n\tGood Bye");
             return;
         }
         default:
             writeln("\n\tOpção Inválida ..!!!");
         }
     }
}

In D you can have interfaces as well:

interface Mamifero {
     void somMamifero();
}

Ali



More information about the Digitalmars-d-learn mailing list