C# 中的抽象函式與虛擬函式
本教程將比較 C# 中的抽象函式和虛擬函式。
C# 中的抽象函式
在 C# 中,抽象函式沒有自己的定義。這意味著每個子類都必須重寫抽象函式並提供其自己的抽象函式定義。抽象函式只能在抽象類內部宣告。abstract
關鍵字用於在 C# 中建立抽象類和函式。以下程式碼示例向我們展示瞭如何使用 C# 中的 abstract
關鍵字建立抽象函式。
using System;
namespace abstract_vs_virtual {
public abstract class parentClass {
public abstract void name();
}
class Program : parentClass {
public override void name() {
Console.WriteLine("This is Child Class");
}
static void Main(string[] args) {
Program p = new Program();
p.name();
}
}
}
輸出:
This is Child Class
我們建立了一個抽象類 parentClass
,並在 parentClass
類中宣告瞭一個抽象函式 name
。我們從 parentClass
繼承了 Program
類,並覆蓋了 name()
函式。在 main
函式中,我們初始化 Program
類的例項並呼叫 name()
函式。
C# 中的虛擬函式
虛擬函式有其自己的定義,但它也允許子類覆蓋它並具有相同函式的自己的定義。在 C# 中,virtual
關鍵字用於指定一個函式是一個虛擬函式。以下程式碼示例向我們展示瞭如何在 C# 中建立虛擬函式。
using System;
namespace abstract_vs_virtual {
public class parentClass {
public virtual void name() {
Console.WriteLine("This is the Parent Class");
}
}
class Program : parentClass {
static void Main(string[] args) {
Program p = new Program();
p.name();
parentClass pc = new parentClass();
pc.name();
}
}
}
輸出:
This is the Parent Class
This is the Parent Class
在上面的程式碼中,我們建立了一個 parentClass
類,並在 parentClass
類中定義了一個虛擬函式 name()
。然後,我們從 parentClass
繼承了 Program
類,並且沒有覆蓋 Program
類中的 name()
函式。在主函式中,我們建立了 Program
類和 parentClass
的例項,並用這兩個例項呼叫了 name()
函式。函式呼叫 p.name()
給我們輸出 This 是 Parent Class
,因為在 Program
類中沒有 name()
函式的定義。
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn