none
Heranca com Interfaces RRS feed

  • Pergunta

  • Trabalhando com Interfaces, presenciei um caso curioso.
    Sempre uso override, mas pela 1a vez tive uma outra abordagem.

    OVERRIDE

    interface IA {
    void printA() { }
    }

    interface IB {
    void printB() { }
    }

    public class AB : IA, IB {
    public override void printA() {}
    public override void printB() {}
    }

    ---------------

    No entanto vi um codigo, que nao usa o override, mas escreve da seguinte forma: 

    interface IA {
    void printA() { }
    }

    interface IB {
    void printB() { }
    }

    public A : IA { }
    public B : IB { }

    public class AB : IA, IB {
    A objA = new A();
    objA.printA();

    B objB = new B();
    objB.printB();
    }

    *** As duas funcionam da mesma forma, mas qual a vantagem de uma em relacao a outra ?
    Qual o nome que se da pra 2a abordagem ?

    Abracos

    segunda-feira, 23 de março de 2015 17:03

Todas as Respostas

  • AGA,

    Vc utiliza override normalmente para sobrescrever/redefinir métodos de uma classe que se está herdando. As classes-filhas possuirão então  a mesma estrutura do tipo-pai, mas com um comportamento diferente no método que foi sobrecarregado.

    O uso desta palavra-chave com interfaces não está correto. Para me certificar disto, fiz inclusive um teste agora há pouco. Se vc tentar compilar o código abaixo:

        public interface ITeste
        {
            void TesteA();
        }
    
        public class Teste : ITeste
        {
            public override void TesteA()
            {
                //TESTE
            }
        }
    


    Aparecerá um erro: Error    1    'ConsoleApplication1.Teste.TesteA()': no suitable method found to override    C:\Temp\ConsoleApplication1\ConsoleApplication1\Program.cs    15    30    ConsoleApplication1

    • Sugerido como Resposta Renato GroffeMVP terça-feira, 24 de março de 2015 16:23
    segunda-feira, 23 de março de 2015 17:36