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();
}
}
}
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TP35EMJpWT5lkeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zROBlL0UTMzEzMwMjMzITOwkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
注:!!
(1)在繼承類中重寫方法時必須保證相同的簽名。如上述程式中,原虛方法為:
public virtual void virtualMehtod()
,則新的類中必須保持
*public * override *void virtualMehtod() *
删除線上的關鍵字一緻!!
(2)若不想讓class2以後的類重寫該虛方法,可加上關鍵字***sealed***,如:
public override sealed void virtualMehtod()