Orientação a objetos - Permissões e agrupamentos

Nesta aula iremos aprender como utilizar os recursos sealed, partial, virtual, new, override para métodos e classes.

assinaturaAssine nossa Comunidade

POO - Permissões e Agrupamentos

Nesta aula mostraremos as diferenças em utilizar os recursos :

  • Sealed
  • Partials
  • New
  • Virtual
  • Override

Sealed

Classes definidas com Sealed não podem ser herdadas. Ao tentar herdar a Classe Animal na classe Macaco, ocorre um erro na compilação - cannot derive from sealed type 'Animal'.

      
        namespace console_app  
        {
          sealed class Animal
          {
            public string teste;
          
          }
            
          class Macaco : Animal 
          {
            public string teste2();
            {
              return "sss";
            }
          }

        } 
      
    

Métodos definidos com Sealed também não podem ser sobrescritos. Ao tentar herdar a Classe Animal na classe Macaco, ocorre um erro na compilação - cannot be sealed because it is not an override'.

      
        namespace console_app  
        {
          class Animal
          {
            public string teste;

            public sealed string teste2();
            {
              return "";
            }
          
          }
            
          class Macaco : Animal 
          {
            public string teste2();
            {
              return "sss";
            }
          }

        } 
      
    

Virtual

Para permitir a sobrescrita de um método herdado na classe filha , utilizamos a palavra virtual no método da classe Pai.

      
        namespace console_app  
        {
          class Animal
          {
            public string teste;

            public virtual string teste2(); //aqui declaramos o método como virtual.
            {
              return "";
            }
          
          }

        } 
      
    

Override

Para sobrescrever um método herdado na classe filha , utilizamos a palavra override no método da classe Filha.

     
      namespace console_app  
      {
        class Animal
        {
          public string teste;

          public virtual string teste2(); //aqui declaramos o método com o virtual.
          {
            return "";
          }

          class Macaco : Animal 
          {
            public override string teste2();//aqui declaramos o método com o override.
            {
              return "sss";
            }
          }
        
        }

      } 
     
   

New

Para ser possível sobrescrever um método herdado na classe filha sem declarar o método como virtual na classe pai, podemos utilizar o new.

      
        namespace console_app  
        {
          class Animal
          {
            public string teste;

            public sealed string teste2();
            {
              return "";
            }
          
          }
            
          class Macaco : Animal 
          {
            //Aqui utilizamos o new para sobrescrever o método teste2()
            //da classe Animal. 
            public new string teste2();
            {
              return "sss";
            }
          }

        } 
      
    

Partials

Quando queremos que uma classe seja parte de outra classe, utilizamos a palavra partial na definição das classes ou na definição dos métodos.Exemplo:

      
        namespace console_app  
        {
          partial class Animal
          {
            public string teste;

            partial void tt();
          
          }
            
          partial class Animal 
          {
            public string teste2;

            partial void tt();
            {
              Console.Write("teste");
            }
          }

        } 
      
    

No programa principal (main), ao criar uma nova instancia da classe Animal, será feita a junção das duas Classes de mesmo nome.

      
        namespace console_app  
        {
          class Program 
          {
            static void Main(string[] args)
            {
              var a = new Animal();
              a.teste2();

              //Resultado 
              //teste
            }
          }
        }
       
    

Orientação a objetos - Permissões e agrupamentos

Nesta aula iremos aprender como utilizar os recursos sealed, partial, virtual, new, override para métodos e classes.

Próximas Aulas:
assinaturaAssine nossa Comunidade

POO - Permissões e Agrupamentos

Nesta aula mostraremos as diferenças em utilizar os recursos :

  • Sealed
  • Partials
  • New
  • Virtual
  • Override

Sealed

Classes definidas com Sealed não podem ser herdadas. Ao tentar herdar a Classe Animal na classe Macaco, ocorre um erro na compilação - cannot derive from sealed type 'Animal'.

      
        namespace console_app  
        {
          sealed class Animal
          {
            public string teste;
          
          }
            
          class Macaco : Animal 
          {
            public string teste2();
            {
              return "sss";
            }
          }

        } 
      
    

Métodos definidos com Sealed também não podem ser sobrescritos. Ao tentar herdar a Classe Animal na classe Macaco, ocorre um erro na compilação - cannot be sealed because it is not an override'.

      
        namespace console_app  
        {
          class Animal
          {
            public string teste;

            public sealed string teste2();
            {
              return "";
            }
          
          }
            
          class Macaco : Animal 
          {
            public string teste2();
            {
              return "sss";
            }
          }

        } 
      
    

Virtual

Para permitir a sobrescrita de um método herdado na classe filha , utilizamos a palavra virtual no método da classe Pai.

      
        namespace console_app  
        {
          class Animal
          {
            public string teste;

            public virtual string teste2(); //aqui declaramos o método como virtual.
            {
              return "";
            }
          
          }

        } 
      
    

Override

Para sobrescrever um método herdado na classe filha , utilizamos a palavra override no método da classe Filha.

     
      namespace console_app  
      {
        class Animal
        {
          public string teste;

          public virtual string teste2(); //aqui declaramos o método com o virtual.
          {
            return "";
          }

          class Macaco : Animal 
          {
            public override string teste2();//aqui declaramos o método com o override.
            {
              return "sss";
            }
          }
        
        }

      } 
     
   

New

Para ser possível sobrescrever um método herdado na classe filha sem declarar o método como virtual na classe pai, podemos utilizar o new.

      
        namespace console_app  
        {
          class Animal
          {
            public string teste;

            public sealed string teste2();
            {
              return "";
            }
          
          }
            
          class Macaco : Animal 
          {
            //Aqui utilizamos o new para sobrescrever o método teste2()
            //da classe Animal. 
            public new string teste2();
            {
              return "sss";
            }
          }

        } 
      
    

Partials

Quando queremos que uma classe seja parte de outra classe, utilizamos a palavra partial na definição das classes ou na definição dos métodos.Exemplo:

      
        namespace console_app  
        {
          partial class Animal
          {
            public string teste;

            partial void tt();
          
          }
            
          partial class Animal 
          {
            public string teste2;

            partial void tt();
            {
              Console.Write("teste");
            }
          }

        } 
      
    

No programa principal (main), ao criar uma nova instancia da classe Animal, será feita a junção das duas Classes de mesmo nome.

      
        namespace console_app  
        {
          class Program 
          {
            static void Main(string[] args)
            {
              var a = new Animal();
              a.teste2();

              //Resultado 
              //teste
            }
          }
        }