O polimorfismo é um dos princípios fundamentais da programação orientada a objetos e é uma técnica que permite que um objeto se comporte de diferentes maneiras em diferentes contextos. Em C#, o polimorfismo pode ser alcançado através do uso de herança e interfaces.
A herança é um mecanismo em que uma classe pode herdar os atributos e métodos de outra classe. Uma classe que herda de outra é chamada de classe derivada ou subclasse, e a classe da qual ela herda é chamada de classe base ou superclasse. O polimorfismo de subtipos pode ser alcançado através da herança.
A interface, por outro lado, é um contrato que define um conjunto de métodos e propriedades que uma classe deve implementar. Uma classe que implementa uma interface é obrigada a fornecer implementações para todos os métodos e propriedades definidos na interface. O polimorfismo de interface pode ser alcançado através do uso de interfaces.
A seguir, vamos ver exemplos de como o polimorfismo pode ser alcançado em C# através de herança e interfaces.
Exemplo de polimorfismo de subtipos usando herança:
using System; public class Animal { public virtual void FazSom() { Console.WriteLine("O animal faz um som"); } } public class Cachorro : Animal { public override void FazSom() { Console.WriteLine("O cachorro late"); } } public class Gato : Animal { public override void FazSom() { Console.WriteLine("O gato mia"); } } public class Program { public static void Main() { Animal[] animais = new Animal[3]; animais [0] = new Animal(); animais [1] = new Cachorro(); animais [2] = new Gato(); foreach (Animal animal in animals) { animal.FazSom(); } } }
Neste exemplo, temos uma classe base Animal que define um método virtual FazSom(). As classes derivadas Cachorroe Gato substituem o método FazSom() da classe base e fornecem suas próprias implementações.
Na classe Program, criamos um array de objetos Animal. Os elementos desse array podem ser objetos da classe Animal, Cachorro ou Gato. Ao chamar o método FazSom() em cada objeto, a implementação apropriada é chamada de acordo com o tipo de objeto.
Exemplo de polimorfismo de interface usando interfaces:
using System; public interface IFormato { void Desenhar(); } public class Circulo: IFormato { public void Desenhar() { Console.WriteLine("Desenhando um círculo"); } } public class Retangulo: IFormato { public void Desenhar() { Console.WriteLine("Desenhando um retângulo"); } } public class Program { public static void Main() { IFormato[] formatos = new IFormato[2]; formatos[0] = new Circulo(); formatos[1] = new Retangulo(); foreach (IFormato formato in formatos ) { formato.Desenhar(); } } }
Neste exemplo, temos uma interface IShape que define um método Draw(). As classes Circle e Rectangle implementam a interface IShape e fornecem suas próprias implementações do método Draw().
Na classe Program, criamos um array de objetos IFormatos. Os elementos desse array podem ser objetos das classes Circuloou Retangulo. Ao chamar o método Desenhar() em cada objeto, a implementação apropriada é chamada de acordo com o tipo de objeto.
O polimorfismo de interface é útil em situações em que uma classe pode implementar várias interfaces e, portanto, ter vários comportamentos diferentes. Isso permite que as classes sejam mais flexíveis e reutilizáveis em diferentes contextos.
Conclusão:
O polimorfismo é uma técnica poderosa na programação orientada a objetos que permite que um objeto se comporte de diferentes maneiras em diferentes contextos. Em C#, o polimorfismo pode ser alcançado através do uso de herança e interfaces. O polimorfismo de subtipos usa a herança para permitir que as classes derivadas substituam métodos da classe base, enquanto o polimorfismo de interface usa interfaces para permitir que as classes implementem vários comportamentos diferentes. O polimorfismo é uma parte fundamental da programação orientada a objetos e é uma técnica importante para escrever código flexível e reutilizável.
Views: 5