Um dos recursos mais importantes da orientação a objetos é a possibilidade de sobrescrever ou sobrecarregar métodos e propriedades. Neste artigo vamos ver na prática como isto acontece.
O ato de sobrescrever um método ou propriedade significa dar uma nova forma ao mesmo, uma nova versão. Vimos isto no artigo anterior onde falamos sobre os pilares da orientação a objetos.
A sobrescrita de no C# é dada pelo uso em conjunto do modificador virtual e override. Sempre que marcamos uma propriedade ou método como virtual, significa que o mesmo pode ser sobrescrito.
A execução desta sobrescrita então é dada pela palavra reservada override, indicada antes do retorno da propriedade ou método.
Para contextualizar melhor, vamos tomar como base um objeto que possui uma finalidade.
public class Garrafa
{
public void Finalidade()
{
Console.WriteLine("Garrafa genérica");
}
}
Embora este objeto esteja bem materializado, uma das coisas legais da orientação a objetos é poder criar novos objetos a partir de um objeto base (pai). Este conceito é chamado de herança, como vimos no artigo anterior.
Queremos então criar novos modelos de garrafa, que tem características similares, mas finalidades diferentes, como por exemplo uma garrafa térmica.
Podemos então definir o método finalidade como virtual para que o mesmo possa ser sobrescrito posteriormente.
public class Garrafa
{
public virtual void Finalidade()
{
Console.WriteLine("Garrafa genérica");
}
}
Desta forma, dada uma nova garrafa, com uma finalidade diferente, podemos ter o mesmo nome no método, porém realizando uma ação completamente diferente.
Para executar então a sobrescrita do método Finalidade que está no objeto pai, utiizamos o override.
public class GarrafaTermica : Garrafa
{
public override void Finalidade()
{
Console.WriteLine("Manter a temperatura");
}
}
Ainda podemos, caso necessário, chamar o método Finalidade do objeto pai utilizando a palavra reservada base.
public class GarrafaTermica : Garrafa
{
public override void Finalidade()
{
base.Finalidade();
Console.WriteLine("Manter a temperatura");
}
}
Neste caso o output do programa seria como mostrado abaixo, afinal, chamamos tanto o método Finalidade do pai quanto do filho.
Garrafa genérica
Manter a temperatura
Sobrecarregar métodos significa ter vários métodos com nomes iguais mais assinaturas diferentes.
A assinatura de um método no C# é dada pela junção do seu nome e seus parâmetros de entrada.
Tomando como base o método abaixo, sua assinatura seria Encher(int mililitros)
, o que nos permitiria ter outros métodos com o nome Encher desde que os mesmos contenham parâmetros diferentes.
public void Encher(int mililitros) {
...
}
No caso, os métodos abaixo NÃO SERIAM permitidos, resulando em um erro de compilação.
public void Encher(int mililitros) {
...
}
// Não permitido
public void Encher(int litros) {
...
}
// Não permitido
public double Encher(int ml) {
...
}
Mesmo mudando o retorno do método, ainda assim teríamos um erro de compilação, pelo fato dele (retorno do método) não fazer parte da assinatura.
Agora temos alguns exemplos que funcionariam, pois trocamos o tipo de entrada (Parâmetros) do método. Mesmo os parâmetros tendo nomes iguais, seus tipos são diferentes, o que permite o método ser sobrecarregado.
public void Encher(int mililitros) {
...
}
public void Encher(double litros) {
...
}
public double Encher(float mililitros) {
..
}
Um outro exemplo comum é ter diferentes métodos, com mesmo nome, mas acumulando parâmetros, como é comum vermos em várias classes do próprio .NET.
public void Data(int dia) {
...
}
public void Data(int dia, int mes) {
...
}
public void Data(int dia, int mes, int ano) {
...
}
Por fim, não se esqueça que podemos reduzir bastante código e a quantidade de métodos utilizando os parâmetros opcionais no C#.
public void Data(int dia, int mes = 1, int ano = 1990) {
...
}
Não deixe de conhecer nosso material sobre C#, SOLID, Clean Code e muita orientação a objetos. Nossos cursos reúnem teoria e prática de forma direta e objetiva. Vou deixar a lista relacionada a orientação a objetos aqui, já na ordem de estudo.
Este curso reune toda base necessária para evoluir na orientação a objetos com a linguagem C#. São mais de 140 aulas em 14 módulos e mais de 12 horas de conteúdo.
Com certeza é um conteúdo massivo, porém completo e necessário para você ter uma base sólida em sua carreira. https://balta.io/cursos/fundamentos-csharp
Neste curso nós colocamos a mão na massa do começo ao fim resolvendo um problema completo somente com orientação a objetos e SOLID.
Este é um curso essencial e um divisor de águas na carreira de muitos desenvolvedores. https://balta.io/cursos/modelando-dominios-ricos
Este é uma continuação do curso anterior, porém mostrando na prática como podemos manter a qualidade e manutenabilidade do software através de testes de unidade.
Este curso é o que vai te colocar um passo a frente de muitas pessoas no quesito qualidade e organização. https://balta.io/cursos/refatorando-para-testes-de-unidade
Caso queira ver todos os cursos anteriores e ainda aprender mais sobre APIs, padronização, documentação, performance e Cloud, temos uma carreira completa.
Esta carreira é extensa mas te dará toda base para desenvolvimento de APIs robustas e de alta performance. https://balta.io/carreiras/backend-developer-dotnet
Também fizemos uma versão em vídeo com exemplos destes códigos em TypeScript, JavaScript e Dart. Vale muito a pena conferir!
Este artigo atualmente utiliza a versão 5.0.0-rc.1 do ASP.NET/.NET, o que significa que ainda não...
Saiba como manter seu código limpo (Clean Code) seguindo algumas práticas sugeridas pelo Robert C...
Git é um sistema de controle de versões distribuídas, enquanto GitHub é uma plataforma que tem o ...
O Visual Studio Code é um editor de código criado pela Microsoft e que tem uma grande adoção pela...
O Angular nos fornece um esquema de rotas e navegação completo, simples e fácil de utilizar.
Me dedico ao desenvolvimento de software desde 2003, sendo minha maior especialidade o Desenvolvimento Web. Durante esta jornada pude trabalhar presencialmente aqui no Brasil e Estados Unidos, atender remotamente times da ?ndia, Inglaterra e Holanda, receber 8x Microsoft MVP e realizar diversas consultorias em empresas e projetos de todos os tamanhos.
Aulas disponíveis
horas de conteúdo
Alunos matriculados
Certificados emitidos
Temos mais de 16 cursos totalmente de graça e todos com certificado de conclusão.
Prefere algo mais Premium?
Compra única, parcelada em até
12x no cartão de crédito
Cobrado mensalmente via
cartão de crédito
Precisa de ajuda?
Sim! Basta criar sua conta gratuita no balta.io e começar seus estudos. Nós contamos com diversos cursos TOTALMENTE gratuitos e com certificado de conclusão.
Nós temos cursos gratuitos e pagos, porém você não precisa informar nenhum dado de pagamento
para começar seus estudos gratuitamente conosco. Os cursos gratuitos são completos e com
certificado de conclusão, você não paga nada por eles.
Porém, caso queira algo mais Premium,
você terá acesso à diversos benefícios que vão te ajudar ainda mais em sua carreira.
Siga SEMPRE as nossas Carreiras, elas vão te orientar em todos
os sentidos. Os cursos já estão organizados em categorias e carreiras para facilitar seu
aprendizado.
Nossa sugestão para aprendizado é começar pelo Backend e seguindo para Frontend e Mobile.
Nenhum curso no mundo vai te ensinar tudo, desculpa ser sincero! Os cursos são uma base, eles fornecem por volta de 30% do que você precisa aprender, o resto é com você, com dedicação e MUITA prática.
Java ou .NET? Angular ou React? Xamarin ou Flutter? A resposta é simples e direta: "Você já sabe
o básico?"
Se você ainda não sabe BEM o básico, ou seja, os fundamentos, OOP, SOLID, Clean Code, está
perdendo tempo estudando Frameworks ou até coisas mais avançadas como Docker. Foque nos seus
objetivos primeiro.
Agora se você está indeciso sobre qual Framework estudar, a boa notícia é que o mercado neste
momento está bem aquecido e você tem várias oportunidade. Desta forma o que levaríamos em conta
para tomar esta decisão seria:
Com certeza! O primeiro passo é começar e você pode fazer isto agora mesmo!
Começar de
graça
Receba em primeira mão todas as nossas novidades.