通過virtual關鍵字修飾的方法稱為虛方法。虛方法可以被子類重寫。例如程式中經常用的ToString()方法就是一個虛方法,它可以在其子類中重寫,實作輸出自定義格式的字元串。
注意:1、virtual修飾符不能與static、abstract或者override修飾符同時使用。
2、虛方法不能是私有的,是以virtual修飾符不能與private修飾符同時使用。
例:使用virtual修飾符聲明一個虛方法,用來計算兩個數的和
Public virtual int Add( int x,int y)
{
Return x+y;
}
2、重寫方法:如果一個方法聲明中含有override修飾符,則稱該方法為重寫方法,它主要用來使用相同的簽名重寫繼承的虛方法。虛方法主要用來引入新方法,重寫方法則使從積累繼承而來的虛方法專用化。
例:public override int Add(int x, int y)
{return x+y;}
注意:override修飾符不能與new、static或者virtual修飾符同僚時使用。另外、重新方法隻能用于重寫基類的虛方法,不能用來單獨聲明方法。
例:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 建立的虛方法,可以在子類中被重寫
/// </summary>
class Operation
public virtual double operation(int x,int y)
{
return x * y;
}
/// 在子類中重寫虛方法
class Addition : Operation
public override double operation(int x, int y)
return (x + y);
private void Form1_Load(object sender, EventArgs e)
comboBox1.SelectedIndex = 0;
private void txtNum1_KeyPress(object sender, KeyPressEventArgs e)
if (!(e.KeyChar <= '9' && e.KeyChar >= '0') && e.KeyChar != '\r' && e.KeyChar != '\b')
e.Handled = true;
private void txtNum2_KeyPress(object sender, KeyPressEventArgs e)
private void button1_Click(object sender, EventArgs e)
if (txtNum1.Text == "" || txtNum2.Text == "")
MessageBox.Show("請輸入數字", "警告", MessageBoxButtons.OK, MessageBoxIcon.Error);
else
if (comboBox1.SelectedIndex == 0)
{
Operation multiplication = new Operation();//原始虛方法進行乘法運算
txtResult.Text = multiplication.operation(Convert.ToInt32(txtNum1.Text.Trim()), Convert.ToInt32(txtNum2.Text.Trim())).ToString();
}
else
Operation Addition = new Addition();
txtResult.Text = Addition.operation(Convert.ToInt32(txtNum1.Text.Trim()), Convert.ToInt32(txtNum2.Text.Trim())).ToString();
}