Substituir (referência C#)
The override modificador é necessário para estender ou modificar a implementação abstrata ou virtual de um método herdado, propriedade, indexador ou evento.
Exemplo
Neste exemplo, a Square classe forneça uma implementação substituída do Area porque Area é herdada do resumo ShapesClass:
abstract class ShapesClass
{
abstract public int Area();
}
class Square : ShapesClass
{
int side = 0;
public Square(int n)
{
side = n;
}
// Area method is required to avoid
// a compile-time error.
public override int Area()
{
return side * side;
}
static void Main()
{
Square sq = new Square(12);
Console.WriteLine("Area of the square = {0}", sq.Area());
}
interface I
{
void M();
}
abstract class C : I
{
public abstract void M();
}
}
// Output: Area of the square = 144
An override método fornece uma implementação nova de um membro que é herdada de uma classe base. O método que é substituído por um override declaração é conhecida sistema autônomo o método base substituído. O método base substituído deve ter a mesma assinatura que o override método. Para obter informações sobre herança, consulte Herança (Guia de programação C#).
Você não pode substituir um método ou virtual não estático.O método base substituído deve ser virtual, abstract, ou override.
An override declaração não é possível alterar a acessibilidade da virtual método. O override método e o virtual o método deve ter o mesmo modificador de nível de acesso.
Não é possível usar o new, static, virtual, ou abstract modificadores para modificar um override método.
Uma declaração de propriedade de substituição deve especificar exatamente o mesmo modificador de acesso, tipo e nome sistema autônomo a propriedade herdada, mas a propriedade substituída deve ser virtual, abstract, ou override.
Para obter mais informações sobre como usar o override palavra-chave, consulte Versão com o substituição e palavras-chave new (guia de programação C#) e Sabendo quando usar substituir e palavras-chave New.
Este exemplo define uma classe base chamada Employeee uma classe derivada chamada SalesEmployee. The SalesEmployee classe inclui uma propriedade extra salesbonuse substitui o método CalculatePay para aproveitá-lo em consideração.
class TestOverride
{
public class Employee
{
public string name;
// Basepay is defined as protected, so that it may be
// accessed only by this class and derrived classes.
protected decimal basepay;
// Constructor to set the name and basepay values.
public Employee(string name, decimal basepay)
{
this.name = name;
this.basepay = basepay;
}
// Declared virtual so it can be overridden.
public virtual decimal CalculatePay()
{
return basepay;
}
}
// Derive a new class from Employee.
public class SalesEmployee : Employee
{
// New field that will affect the base pay.
private decimal salesbonus;
// The constructor calls the base-class version, and
// initializes the salesbonus field.
public SalesEmployee(string name, decimal basepay,
decimal salesbonus) : base(name, basepay)
{
this.salesbonus = salesbonus;
}
// Override the CalculatePay method
// to take bonus into account.
public override decimal CalculatePay()
{
return basepay + salesbonus;
}
}
static void Main()
{
// Create some new employees.
SalesEmployee employee1 = new SalesEmployee("Alice",
1000, 500);
Employee employee2 = new Employee("Bob", 1200);
Console.WriteLine("Employee4 " + employee1.name +
" earned: " + employee1.CalculatePay());
Console.WriteLine("Employee4 " + employee2.name +
" earned: " + employee2.CalculatePay());
}
}
/*
Output:
Employee4 Alice earned: 1500
Employee4 Bob earned: 1200
*/
Especificação da linguagem C#
Para obter mais informações, consulte as seções a seguir no Especificação da linguagem C#:
1.6.6.4 Virtual, substituir e métodos abstratos
10.6.4 Substituir métodos
Consulte também
Conceitos
Referência
Herança (Guia de programação C#)
Polymorphism (guia de programação C#)