天天看點

面向對象——虛方法

通過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();

   }

繼續閱讀