Nesta aula iremos aprender como utilizar os recursos sealed, partial, virtual, new, override para métodos e classes.
Nesta aula mostraremos as diferenças em utilizar os recursos :
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";
}
}
}
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 "";
}
}
}
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";
}
}
}
}
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";
}
}
}
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
}
}
}
Nesta aula iremos aprender como utilizar os recursos sealed, partial, virtual, new, override para métodos e classes.
Nesta aula mostraremos as diferenças em utilizar os recursos :
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";
}
}
}
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 "";
}
}
}
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";
}
}
}
}
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";
}
}
}
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
}
}
}