Herança de C # & Polimorfismo com exemplos

Índice:

Anonim

Neste tutorial, você aprenderá-

  • Herança
  • Polimorfismo

O que é herança em C #?

Herança é um conceito importante em C #. Herança é um conceito no qual você define classes pai e classes filho.

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 métodos próprios, se necessário.

Você terá um melhor entendimento se observarmos essa ação.

Vamos agora ver como podemos incorporar o conceito de herança em nosso código.

Etapa 1) A primeira etapa é alterar o código de nossa classe Tutorial. Nesta etapa, adicionamos o código abaixo ao arquivo Tutorial.cs.

Observe que agora precisamos adicionar o modificador de acesso de 'protected' para ambos os campos TutorialID e TutorialName.

Lembre-se de que mencionamos esse modificador de acesso no tutorial do Modificador de Acesso. Bem, aqui você pode ver o propósito de ter isso. Somente quando você tiver este modificador de acesso (protegido), a classe filha poderá usar os campos da classe pai.

Etapa 2) A segunda etapa é adicionar nossa nova classe filha. O nome desta classe 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.

Explicação do código: -

  1. A primeira etapa é criar a classe filha Guru99Tutorial. Também precisamos mencionar que esta classe será uma classe filha da classe Tutorial. Isso é feito pela palavra-chave ':'.
  2. A seguir, estamos definindo um método chamado RenameTutorial. Ele será usado para renomear o campo TutorialName. Este método aceita uma variável de string que contém o novo nome do Tutorial.
  3. Em seguida, atribuímos o parâmetro pNewName ao campo TutorialName.

    Nota : - Embora não tenhamos definido o campo TutorialName na classe "Guru99Tutorial", ainda podemos acessar este campo. Isso ocorre porque "Guru99Tutorial" é uma classe filha da classe Tutorial. E como tornamos os campos da classe Tutorial protegidos, eles podem ser acessados ​​por esta classe.

Etapa 3) A última etapa é modificar nosso arquivo Program.cs principal. Em nosso aplicativo de console, faremos um objeto da classe Guru99Tutorial. Com este objeto, vamos chamar o método RenameTutorial. Em seguida, exibiremos 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{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();}}}

Explicação do código: -

  1. A primeira etapa é criar um objeto para a classe Guru99Tutorial. Isso é feito por meio da palavra-chave 'nova'. Observe que desta vez não estamos criando um objeto da classe Tutorial.
  2. Usamos o método RenameTutorial da classe Guru99Tutorial para alterar o campo TutorialName. Passamos a string ".Net por Guru99" para o método RenameTutorial.
  3. Em seguida, chamamos o método GetTutorial. Observe que, embora esse método não seja definido na classe Guru99Tutorial, ainda podemos acessar esse método. A saída do método GetTutorial é 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.

Resultado:

Na saída, podemos ver claramente que o campo TutorialName foi renomeado para ".Net por Guru99". Isso foi possível com o método RenameTutorial chamado pela classe filha.

O que é polimorfismo em C #?

Polimorfismo é um conceito OOPs em que um nome pode ter várias formas.

Por exemplo, você tem um smartphone para comunicação. O modo de comunicação que você escolher pode ser qualquer um. Pode ser uma ligação, uma mensagem de texto, uma mensagem multimídia, mail, etc. Então, o objetivo comum é a comunicação, mas a abordagem é diferente. Isso é chamado de polimorfismo.

Você terá um melhor entendimento se observarmos essa ação.

Vamos agora ver como podemos incorporar o conceito de polimorfismo em nosso código.

Etapa 1) A primeira etapa é alterar o código de nossa classe Tutorial. Nesta etapa, adicionamos o código abaixo ao arquivo Tutorial.cs.

Explicação do código: -

1 e 2) O primeiro passo é o mesmo dos nossos exemplos anteriores. Estamos mantendo a definição do método SetTutorial como está.

3) Este método define o TutorialID e o TutorialName com base nos parâmetros pID e pName.

4) É aqui que fazemos uma alteração em nossa classe, em que 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 de TutorialName como pName.

Etapa 2) A última etapa é modificar nosso arquivo Program.cs principal. Em nosso aplicativo de console, faremos um objeto da classe Guru99Tutorial.

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();}}}

Explicação do código: -

  1. Na primeira etapa, estamos usando o método SetTutorial com 2 parâmetros. Onde estamos passando TutorialID e TutorialName para este método.
  2. Na segunda etapa, agora estamos chamando o método SetTutorial com apenas um parâmetro. Estamos apenas passando o TutorialName para este método.

Se o código acima for inserido corretamente e o programa for executado, a seguinte saída será exibida. Se no caso de você desejar também buscar o ID do tutorial junto com o nome do tutorial, você deve seguir a etapa abaixo

  1. Crie um método separado chamado public int GetTutorialID
  2. Nesse método, escreva a linha de código "return TutorialID". Isso pode ser usado para retornar o TutorialID ao programa de chamada.

Resultado:

Na saída, podemos ver claramente que os dois métodos foram chamados com sucesso. Por causa disso, as strings "Primeiro Tutorial" e "Segundo Tutorial" foram enviadas para o console.

Resumo

  • Herança é onde uma classe filha herda os campos e métodos da classe pai. A classe filha também pode definir seus próprios métodos.
  • Polimorfismo é um conceito OOPs em que um nome pode ter várias formas.