C# - Classe base, classe derivada e alguns conceitos básicos - I
Neste artigo veremos os conceitos de classe base, derivada, a palavra-chave base, o modificador virtual , o modificador override e alguns conceitos básicos. |
Hoje vamos rever alguns conceitos básicos da programação orientada a objetos (POO) na linguagem C#.
A POO possui uma nomenclatura que pode confundir os novatos, então vamos começar esclarecendo alguns conceitos bem básicos:
A classe é uma estrutura de dados, um tipo, que na linguagem C# é um tipo por referência;
Um objeto é uma instância de uma classe. Assim a classe funciona como um modelo, uma planta a partir da qual são criados os objetos;
A Herança é um recurso que permite criar uma classe que é baseada em outra classe já existente reusando o código já escrito;
Superclasse é a classe mãe ou classe base; é aquela classe que será derivada;
Subclasse é a classe derivada ou a classe filha que foi herda de uma classe base ou superclasse;
Criando uma classe base e usando a herança com uma classe derivada
Vejamos como os conceitos de classe base, classe derivada e herança atuam em conjunto:
Vamos criar uma classe chamada Pessoa que será a nossa classe base:
Superclasse ou classe base |
A classe base Pessoa possui as propriedades Nome e Telefone e o método GetInfo() usando a palavra-chave ou modificador virtual. As propriedades usam o modificador protected de forma que somente poderão ser acessadas pela classe e pelas classes que herdarem desta classe.
Nota: O código usa os recursos da inicialização de propriedades automáticas e da interpolação de strings.
A palavra-chave virtual é usada para modificar uma declaração de método, propriedade, indexador ou evento e permitir que ela seja substituída em uma classe derivada.
Vamos agora criar a classe Funcionario que herda da classe base Pessoa :
Subclasse ou classe derivada |
A classe derivada Funcionario herda de Pessoa e terá acesso a seus métodos e propriedades públicas e/ou protected.
A classe Funcionario possui uma propriedade Codigo e esta substituindo o método GetInfo() da classe base usando o modificador override. Isso é possível pois o método foi definido com o modificador virtual na classe base.
Por padrão, os métodos não são virtuais. Você não pode substituir um método não virtual.
O modificador override é necessário para estender ou modificar a implementação abstrata ou virtual de um método, propriedade, indexador ou evento herdado.
Note que no método GetInfo() da classe derivada usamos a palavra-chave base invocando o método GetInfo() da classe base.
A palavra-chave base é usada para acessar membros de classe base de dentro de uma classe derivada:
Um acesso à classe base é permitido somente em um construtor, em um método de instância ou em um acessador de propriedade de instância.
Abaixo no código criamos um objeto ou uma instância da classe Funcionario e chamamos o método GetInfo() de Funcionario:
No resultado final vemos que o método GetInfo() da classe base foi chamado usando a palavra-chave base e assim obtivemos o nome e telefone do funcionário.
Abaixo temos uma figura que descreve o fluxo da execução :
Esse é o comportamento padrão, mas, existe um problema que ocorre ao chamar um método virtual no construtor de classe base que pode causar um comportamento inconsistente do aplicativo, já que você estar chamando o método de classe derivada antes de inicializar todas as propriedades da classe derivada.
Isso eu vou mostrar na próxima parte do artigo. Aguarde...
"Jesus respondeu, e disse-lhe: Se alguém me ama, guardará a
minha palavra, e meu Pai o amará, e viremos para ele, e faremos nele morada."
João 14:23
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
C# - Classes Abstratas, Interface e Polimorfismo - Macoratti
NET - Usando padrões de projeto e princípios OOP na ... - Macoratti