“A Herança é um princípio da Programação Orientada a Objetos que permite que as classes compartilhem atributos e operações baseados em um relacionamento, geralmente generalização. A herança permite a criação de subclasses que herdam alguns dos atributos e das operações (ou Métodos) da classe pai (super-classe ou classe base). A herança é um conceito aplicado no momento de criação das classes. Ela é usada na intenção de reaproveitar código ou comportamento generalizado ou especializar operações ou atributos.” (…)
Trecho do texto descrevendo o que é herança, retirado do Wikipédia. Saiba mais sobre o conceito de herança em programação acessando os links abaixo:
http://pt.wikipedia.org/wiki/Herança_(programação)
http://msdn.microsoft.com/pt-br/library/ms173149(VS.90).aspx
-
Olá,
Hoje falaremos um pouco sobre herança em aplicações Orientadas a Objetos. Criando um simples sistema que possui como super classe PESSOA e como classes derivadas FUNCIONÁRIO e CLIENTE. Conceito:
Um funcionário e um cliente, necessariamente herda características de uma pessoa.
PASSO 1:
Vamos abrir o Visual Studio e no menu acima ir em File > New Project > Visual C# > Console Application, digitar um nome para o projeto e clicar em “OK”.
PASSO 2:
Certifique-se de que a aba SOLUTION está aberta, caso não esteja, você pode abrí-la com o atalho: crtl + alt + L
PASSO 3:
Clique com o botão no ícone da solution, e acesse a opção: ADD > New Item > Visual C# Class, entre com o nome “Pessoa” e clique em “OK”.
PASSO 4:
Vamos criar uma simples classe Pessoa, que possui as seguintes propriedades:
- Nome (string)
- Nascimento (DateTime)
- Cpf (long)
Respectivamente: Nome do atributo (tipo)
///
/// Classe pessoa
///
public class Pessoa
{
///
/// Nome da pessoa
///
public string Nome { get; set; }
///
/// Data de aniversário da pessoa
///
public DateTime Nascimento { get; set; }
///
/// Números do cpf da pessoa
///
public long Cpf { get; set; }
}
PASSO 5:
Repita o passo anterior para criarmos agora uma nova classe, sendo que com o nome “Funcionario”, que terá as seguintes propriedades:
- DataAdmissao (DateTime)
- Salario (double)
- Funcao (string)
Entre com o código abaixo:
///
/// Classe de uma pessoa que é funcionário
///
public class Funcionario : Pessoa // percebe-se que agora o nome da classe possui " : Pessoa". Isto faz a classe "Funcionário" herdar as características de "Pessoa". A herança nesta diferença ao criar uma nova classe.
{
///
/// Data da admissão do funcionário
///
public DateTime DataAdmissao { get; set; }
///
/// Salário do funcionário
///
public double Salario { get; set; }
///
/// Função exercida pelo mesmo
///
/// Analista de Sistemas, Gerente de contas, Auxiliar Administrativo e etc
public string Funcao { get; set; }
}
PASSO 6:
Faça o mesmo agora para criarmos a classe “Cliente”, que possui os seguintes atributos:
- Empresa (string)
- EnderecoComercial (string)
///
/// Classe de uma pessoa que é cliente
///
public class Cliente : Pessoa
{
///
/// Nome da empresa em que o mesmo trabalha
///
public string Empresa { get; set; }
///
/// Endereço para se localizar o cliente
///
public string EnderecoComercial { get; set; }
}
PASSO 7:
Agora, criaremos um método em cada classe (Funcionário e Cliente) que escreverá todas as propriedades dos mesmos na tela do console. Para isso, abra o arquivo “Funcionario.cs” na solution e entre com o seguinte método:
///
///
/// Escreve informações do funcionário na tela
///
public void EscreveInformacoes()
{
Console.WriteLine("CRIADO UM NOVO FUNCIONÁRIO:");
Console.WriteLine("CPF: " + this.Cpf);
Console.WriteLine("Data de Admissão: " + this.DataAdmissao.Date.ToString("dd/MM/yyyy"));
Console.WriteLine("Função: " + this.Funcao);
Console.WriteLine("Nascimento: " + this.Nascimento.Date.ToString("dd/MM/yyyy"));
Console.WriteLine("Nome: " + this.Nome);
Console.WriteLine("Salário: R$" + this.Salario);
}
Faça o mesmo no arquivo “Cliente.cs”:
///
///
/// Escreve na tela informações do cliente na tela
///
public void EscreveInformacoes()
{
Console.WriteLine();
Console.WriteLine("CRIADO UM NOVO CLIENTE:");
Console.WriteLine("Empresa: " + this.Empresa);
Console.WriteLine("Endereço comercial: " + this.EnderecoComercial);
Console.WriteLine("Nascimento: " + this.Nascimento.Date.Date.ToString("dd/MM/yyyy"));
Console.WriteLine("Nome: " + this.Nome);
}
PASSO 8:
Finalmente vamos agora instanciar os objetos na classe “Program.cs” do console, para exibirmos os dados na tela de nossas classes funcionando.
Antes disso, vamos nos certificar de que a codificação está correta e funcionando, fazendo um BUILD da solution. Acesse o menu superior, clique em BUILD e em seguida em BUILD SOLUTION:

Certificando-se de que não há erros em nossa Solution, vamos na classe Program, no método construtor: “Main” e fazer uma chamada para dois métodos que iremos construir em seguida. Estes métodos, instanciarão os objetos “Funcionario” e “Cliente” e escreverá seus dados na tela:
///
/// Método construtor do console
///
static void Main(string[] args)
{
CarregaFuncionario(); // Cria a instancia de funcionario
CarregaCliente(); // Cria a instancia do cliente
Console.ReadKey(); // Este comando faz a tela do console não fechar após ser executada e aguardar até uma tecla ser pressionada, para finalizar a instancia do console
}
PASSO 9:
Vamos criar os métodos que chamamos anteriormente da seguinte maneira:
///
/// Instancia um novo funcionário
///
static void CarregaFuncionario()
{
var funcionario = new Funcionario()
{
Cpf = 12345678900,
DataAdmissao = new DateTime(2010, 5, 4),
Funcao = "Analista de Testes",
Nascimento = new DateTime(1968, 10, 20),
Nome = "Maurício Santos",
Salario = 450.37
};
funcionario.EscreveInformacoes();
}
///
/// Instancia um novo cliente
///
static void CarregaCliente()
{
var cliente = new Cliente()
{
Cpf = 98765432100,
Empresa = "Sanduíches S.A",
EnderecoComercial = "Av. Rio Branco 100",
Nascimento = new DateTime(1981, 1, 12),
Nome = "Kiko da Silva"
};
cliente.EscreveInformacoes();
}
OBSERVAÇÕES:
1) Perceba, que quando começamos a escrever cada propriedade da classe, o Visual Studio já mostra o comentário que fizemos para cada elemento e lhe auxilia na escrita com o seu intelesense:

2) Perceba que o mesmo acontece na escrita de chamadas de métodos:

PASSO 10:
Finalmente estamos prontos para testar o programa. Aperte F5 e a resposta deverá ser igual a abaixo:

-
Espero que tenham gostado da simples abordagem sobre heranças. Estou abrindo os comentários para perguntas.
Baixe a solution completa funcionando