抽象方法只能包含在抽象類中:
using System;
abstract class Parent
{
/* 抽象方法是隱式的虛方法, 但不能用 static 或 virtual 修飾 */
public abstract void Method1();
/* 抽象類可以包含非抽象方法 */
public void Method2() { Console.WriteLine("Method2"); }
/* 甚至可以包含靜態方法 */
public static void Method3() { Console.WriteLine("Method3"); }
}
class Child : Parent
{
/* 實現抽象方法要使用 override */
public override void Method1() { Console.WriteLine("Method1"); }
}
class Program
{
static void Main()
{
Parent.Method3(); // Method3
Child.Method3(); // Method3
Parent obj = new Child();
obj.Method1(); // Method1
obj.Method2(); // Method2
Console.ReadKey();
}
}
派生類要實現父類的抽象方法, 除非它自己也是抽象類:
using System;
abstract class Parent
{
public abstract void Method1();
}
abstract class Child1 : Parent
{
}
class Child2 : Child1
{
public override void Method1() { Console.WriteLine("Method1"); }
}
class Program
{
static void Main()
{
Parent obj = new Child2();
obj.Method1(); //Method1
Console.ReadKey();
}
}