09 – Classe e métodos abstratos


Olá!

Hoje o assunto é classe abstrata e sua utilização é aplicada quando precisamos ter algo como base ou modelo para uma futura especialização. Especialização como por exemplo ter uma classe carro, que tem um método chamado trocar pneu, que só troca pneu, mas quando eu fizer uma sobrecarga neste método para “especializá-lo”, coloco dentro do meu novo método em outra classe uma opção de também trocar a camâra de ar e assim o meu método especializado troca pneu e camâra.

fonte: https://mastigado.wordpress.com

Características:

  • Uma classe abstrata precisa possuir pelo menos um método abstrato;
  • Quando declaramos um método abstract dentro de uma classe abstrata e ele não tem implementação, a sua declaração será  apenas com sua assinatura, como é o caso de public abstract bool IsValid(string value).

Abaixo,  uma classe abstrata declarada de uma forma bem simples para que ninguém tenha dúvida.

namespace ConsoleApplication
{
   abstract class Pessoa
   {
      private string  cpf;
      public String CPF
      {
         get{
            return cpf;
         }
         set{
            if(this.IsValid(value))
            {
               //Faz alguma coisa
            }
         throw new ArgumentException("CPF Inválido");
      }
    }

    public abstract bool IsValid(string value);

    public virtual bool NotValid(string value)
    {
        return true;
    }
   }
}

Abaixo, a classe Funcionário fazendo sobrecarga de um método da classe abastrata Pessoa.

namespace ConsoleApplication
{
    class Funcionario : Pessoa
    {
        public override bool IsValid(string value)
        {
            throw new NotImplementedException();
        }
    }
}

No exemplo da classe Cliente, a palavra override serve tanto para métodos virtual ou abstract, pois se na classe abstrata existir um método virtual, quando ele for sofrer sobrecarga, terá de levar na assinatura o nome override e se ainda da classe que for herdada for necessário fazer sobrecarga de um método abstract que não leva o nome de virtual, também deverá ser override.

namespace ConsoleApplication
{
    class Cliente : Pessoa
    {
        public override bool IsValid(string value)
        {
            throw new NotImplementedException();
        }

        public override bool NotIsValid(string value)
        {
            throw new NotImplementedException();
        }
    }
}

fonte: https://mastigado.wordpress.com

Sobre Mastigado
Sou um daqueles que precisa mudar o mundo.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: