天天看點

C#學習——虛方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 虛方法
{
    //建立一個class1類
    class class1
    {
//預設的方法被指定為私有的,隻能在目前類中進行通路 private
//需要在其他類中通路,就需要将其指定為public:通路權限最高,隻要在項目内部都可以進行通路
//virtual關鍵字必須位于void前
public virtual void virtualMehtod()//因為虛方法能夠在派生類中進行重寫

        {
            Console.WriteLine("這是一個虛方法");
        }
        public void nonVirtualMehtod()
        {
            Console.WriteLine( "這是一個非虛方法");
        }
    }
    class class2:class1//将class2繼承于class1
    {
        //重寫一下虛方法
        public override void virtualMehtod()
        {
            Console.WriteLine("這是一個新寫的虛方法");
        }
        public new void nonVirtualMehtod()
        {
            Console.WriteLine("這是一個新的方法");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            class1 c1 = new class1();//将類進行執行個體化
            c1.virtualMehtod();
            c1.nonVirtualMehtod();
            class2 c2 = new class2();
            c2.virtualMehtod();
            c2.nonVirtualMehtod();
            c1 = c2;
            c1.virtualMehtod();
            c1.nonVirtualMehtod();
            Console.ReadKey();
        }
    }
}

           
C#學習——虛方法

注:!!

(1)在繼承類中重寫方法時必須保證相同的簽名。如上述程式中,原虛方法為:

public virtual void virtualMehtod()

,則新的類中必須保持

*public * override *void virtualMehtod() *

删除線上的關鍵字一緻!!

(2)若不想讓class2以後的類重寫該虛方法,可加上關鍵字***sealed***,如:

public override sealed void virtualMehtod()