Herança e polimorfismo C# com exemplos de programas
⚡ Resumo Inteligente
Herança e polimorfismo em C# são dois princípios fundamentais da programação orientada a objetos. A herança permite que uma classe filha reutilize os campos e métodos de uma classe pai, enquanto o polimorfismo permite que um nome de método assuma várias formas.
O que é herança em C#?
Herança é um conceito importante de C#. Herança é um conceito no qual você define classes pai e classes filhas. As classes filhas herdam métodos e propriedades da classe pai, mas, ao mesmo tempo, também podem modificar o comportamento dos métodos, se necessário. A classe filha também pode definir seus próprios métodos, se necessário.
Vamos entender melhor a herança C# por um exemplo de programa:
Exemplo de herança C#
Vamos agora ver como podemos incorporar o conceito de herança em nosso código.
Passo 1) O primeiro passo é alterar o código da nossa classe Tutorial. Nesta etapa, adicionamos o código abaixo ao arquivo Tutorial.cs.
Observe que agora precisamos adicionar o modificador de acesso 'protegido' aos campos TutorialID e TutorialName.
Lembre-se de que mencionamos esse modificador de acesso no... Tutorial sobre Modificadores de AcessoBem, aqui você pode ver o propósito disso. Somente quando você tem esse modificador de acesso (protected), a classe filha poderá usar os campos da classe pai.
Passo 2) O segundo passo é adicionar nossa nova turma infantil. O nome dessa turma será “Guru99Tutorial”. Nesta etapa, adicionamos o código abaixo ao arquivo Tutorial.cs. O código deve ser colocado após a definição da classe Tutorial.
Code Explicação:-
- O primeiro passo é criar o Guru99Classe filha de Tutorial. Também precisamos mencionar que esta classe será uma classe filha da classe Tutorial. Isso é feito pela palavra-chave ':'.
- A seguir, estamos definindo um método chamado RenameTutorial. Ele será usado para renomear o campo TutorialName. Este método aceita uma variável string que contém o novo nome do Tutorial.
- Em seguida, atribuímos o parâmetro pNewName ao campo TutorialName. Observação: – Mesmo que não tenhamos definido o campo TutorialName no “GuruNa aula “99Tutorial”, ainda conseguimos acessar este campo. Isso ocorre porque “Guru"99Tutorial" é uma classe filha da classe Tutorial. E como definimos os campos da classe Tutorial como protegidos, eles podem ser acessados por esta classe.
Passo 3) O último passo é modificar nosso arquivo principal Program.cs. Em nosso aplicativo de console, vamos criar um objeto do GuruClasse 99Tutorial. Com esse objeto, vamos chamar o método RenameTutorial. Em seguida, vamos exibir o campo TutorialName com a ajuda do método GetTutorial.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { public class Tutorial { protected int TutorialID; protected string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public String GetTutorial() { return TutorialName; } } public class Guru99Tutorial:Tutorial { public void RenameTutorial(String pNewName) { TutorialName=pNewName; } static void Main(string[] args) { Guru99Tutorial pTutor=new Guru99Tutorial(); pTutor.RenameTutorial(".Net by Guru99"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Explicação:-
- O primeiro passo é criar um objeto para o Guru99Classe Tutorial. Isso é feito através da palavra-chave 'new'. Observe que desta vez não estamos criando um objeto da classe Tutorial.
- Utilizamos o método RenameTutorial do GuruNa classe 99Tutorial, para alterar o campo TutorialName, passamos a string “.Net por Guru99” para o método RenameTutorial.
- Em seguida, chamamos o método GetTutorial. Observe que, embora esse método não esteja definido no GuruNa classe 99Tutorial, ainda podemos acessar esse método. A saída do método GetTutorial é então exibida no console por meio do método Console.WriteLine.
Se o código acima for inserido corretamente e o programa for executado com sucesso, a seguinte saída será exibida.
Saída:
A partir da saída, podemos ver claramente que o campo TutorialName foi renomeado para “.Net by”. Guru99”. Isso foi possível graças ao método RenameTutorial chamado pela classe filha.
O que é polimorfismo em C#?
Polimorfismo in C# Polimorfismo é um conceito da Programação Orientada a Objetos (POO) onde um nome pode ter várias formas. Por exemplo, imagine um smartphone para comunicação. O modo de comunicação escolhido pode ser qualquer um: uma chamada, uma mensagem de texto, uma mensagem com foto, um e-mail, etc. O objetivo é o mesmo, ou seja, a comunicação, mas a abordagem é diferente. Isso se chama polimorfismo.
Você obterá uma melhor compreensão do polimorfismo C# pelo exemplo de programa abaixo:
Exemplo de polimorfismo C#
Vamos agora ver como podemos incorporar o conceito de Polimorfismo em nosso código.
Passo 1) O primeiro passo é alterar o código da nossa classe Tutorial. Nesta etapa, adicionamos o código abaixo ao arquivo Tutorial.cs.
Code Explicação:-
1 e 2) O primeiro passo é o mesmo dos nossos exemplos anteriores. Estamos keeping A definição do método SetTutorial tal como está.
3) Este método define TutorialID e TutorialName com base nos parâmetros pID e pName.
4) É aqui que fazemos uma alteração em nossa classe onde adicionamos um novo método com o mesmo nome de SetTutorial. Só que desta vez estamos passando apenas um parâmetro que é o pName. Neste método, estamos apenas definindo o campo TutorialName como pName.
Passo 2) O último passo é modificar nosso arquivo principal Program.cs. Em nosso aplicativo de console, vamos criar um objeto do Guru99Aula tutorial.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Tutorial { public int TutorialID; public string TutorialName; public void SetTutorial(int pID,string pName) { TutorialID=pID; TutorialName=pName; } public void SetTutorial(string pName) { TutorialName=pName; } public String GetTutorial() { return TutorialName; } static void Main(string[] args) { Tutorial pTutor=new Tutorial(); pTutor.SetTutorial(1,"First Tutorial"); Console.WriteLine(pTutor.GetTutorial()); pTutor.SetTutorial("Second Tutorial"); Console.WriteLine(pTutor.GetTutorial()); Console.ReadKey(); } } }
Code Explicação:-
- Na primeira etapa, estamos utilizando o método SetTutorial com 2 parâmetros. Onde estamos passando TutorialID e TutorialName para este método.
- Na segunda etapa, chamamos agora o método SetTutorial com apenas um parâmetro. Estamos apenas passando TutorialName para este método.
Se o código acima for inserido corretamente e o programa for executado, a seguinte saída será exibida. Caso você queira buscar também o Tutorial ID junto com o Tutorial Name , você deve seguir o passo abaixo
- Crie um método separado chamado public int GetTutorialID
- Nesse método, escreva a linha de código “return TutorialID”. Isso pode ser usado para retornar o TutorialID ao programa de chamada.
Saída:
Na saída, podemos ver claramente que ambos os métodos foram chamados com sucesso. Por conta disso, as strings “Primeiro Tutorial” e “Segundo Tutorial” foram enviadas para o console.








