Default interface methods no C#

Interfaces com métodos padrões se trata da capacidade de adicionar assinaturas de métodos em uma interface com um corpo definido (com um comportamento padrão ou mesmo um corpo vazio) fazendo com que as classes que implementam essa interface não tenham …


This content originally appeared on DEV Community and was authored by Guilherme Govaski

Interfaces com métodos padrões se trata da capacidade de adicionar assinaturas de métodos em uma interface com um corpo definido (com um comportamento padrão ou mesmo um corpo vazio) fazendo com que as classes que implementam essa interface não tenham a obrigatoriedade de implementar esse novo método adicionado na interface.

Imagine o seguinte cenário genérico:

Temos uma interface IAnimal que contém métodos comuns que simulam comportamentos comuns de todos os animais.

public interface IAnimal 
{
  void MakeSound();
  void Eat();
  void Sleep();
}

Temos 3 classes que representam animais terrestres e que implementam a interface IAnimal.

public class Dog : IAnimal
{
    public void Eat()
    {        
    }

    public void MakeSound()
    {        
    }

    public void Sleep()
    {        
    }
}

public class Cat : IAnimal
{
    public void Eat()
    {        
    }

    public void MakeSound()
    {        
    }

    public void Sleep()
    {
    }
}

public class Rabbit : IAnimal
{
    public void Eat()
    {        
    }

    public void MakeSound()
    {        
    }

    public void Sleep()
    {        
    }
}

E também temos uma outra classe de um animal voador, que também implementa a interface IAnimal.

public class Bird : IAnimal
{
    public void Eat()
    {        
    }

    public void MakeSound()
    {        
    }

    public void Sleep()
    {        
    }

    public void Fly() 
    {    
    }
}

Agora, digamos que precisamos adicionar um novo método "Run" na nossa interface IAnimal, porém não queremos que ela tenha uma implementação concreta na classe do animal voador "Bird", somente nas classes dos animais terrestres.

Podemos fazer dessa forma, adicionando um corpo ao método dentro da interface:

public interface IAnimal 
{
  void MakeSound();
  void Eat();
  void Sleep();
  public void Run() 
  {    
  }
}

Agora nossas classes que representam animais terrestres, podem implementar esse novo método.

public class Dog : IAnimal
{
    public void Eat()
    {        
    }

    public void MakeSound()
    {        
    }

    public void Sleep()
    {        
    }

    public void Run() 
    {
        Console.WriteLine("Running...");
    }
}

public class Cat : IAnimal
{
    public void Eat()
    {        
    }

    public void MakeSound()
    {        
    }

    public void Sleep()
    {
    }

    public void Run() 
    {
        Console.WriteLine("Running...");
    }
}

public class Rabbit : IAnimal
{
    public void Eat()
    {        
    }

    public void MakeSound()
    {        
    }

    public void Sleep()
    {        
    }

    public void Run() 
    {
        Console.WriteLine("Running...");
    }
}

Enquanto nossa classe que representa um animal voador "Bird" não precisará fazer essa implementação, então ela permanece assim:

public class Bird : IAnimal
{
    public void Eat()
    {        
    }

    public void MakeSound()
    {        
    }

    public void Sleep()
    {        
    }

    public void Fly() 
    {    
    }
}

Como você viu, pode ser muito útil utilizar esse recurso, porém fique atento para acabar não poluindo a interface ou mesmo quebrando o princípio SRP (Single Responsability Principle) ao adicionar métodos demasiadamente ou métodos que não fazem parte do contexto da interface.


This content originally appeared on DEV Community and was authored by Guilherme Govaski


Print Share Comment Cite Upload Translate Updates
APA

Guilherme Govaski | Sciencx (2024-08-05T04:35:58+00:00) Default interface methods no C#. Retrieved from https://www.scien.cx/2024/08/05/default-interface-methods-no-c/

MLA
" » Default interface methods no C#." Guilherme Govaski | Sciencx - Monday August 5, 2024, https://www.scien.cx/2024/08/05/default-interface-methods-no-c/
HARVARD
Guilherme Govaski | Sciencx Monday August 5, 2024 » Default interface methods no C#., viewed ,<https://www.scien.cx/2024/08/05/default-interface-methods-no-c/>
VANCOUVER
Guilherme Govaski | Sciencx - » Default interface methods no C#. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/08/05/default-interface-methods-no-c/
CHICAGO
" » Default interface methods no C#." Guilherme Govaski | Sciencx - Accessed . https://www.scien.cx/2024/08/05/default-interface-methods-no-c/
IEEE
" » Default interface methods no C#." Guilherme Govaski | Sciencx [Online]. Available: https://www.scien.cx/2024/08/05/default-interface-methods-no-c/. [Accessed: ]
rf:citation
» Default interface methods no C# | Guilherme Govaski | Sciencx | https://www.scien.cx/2024/08/05/default-interface-methods-no-c/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.