C# 中的 Java final 等效關鍵字

本教程將討論與 Java 中的 final 關鍵字等效的 C# 關鍵字。

Java final 關鍵字在 C# 中的等效

不幸的是,C# 中沒有關鍵字與 Java 中的 final 關鍵字具有相同的作用。final 關鍵字在不同的上下文中具有不同的目的。在類中,函式宣告 final 關鍵字用於防止從類繼承或虛擬函式的任何新定義。在欄位初始化中,final 關鍵字用於指定以後無法在程式中修改特定的欄位值。

類和函式宣告中的 Java final 關鍵字

如果用於類或函式宣告,則 C# 中的 sealed 關鍵字與 Java 語言中的 final 關鍵字等效。以下程式碼示例向我們展示瞭如何在 Java 的類宣告中使用 final 關鍵字。

public final class MyFinalClass {...}

上面的程式碼使我們無法繼承 Java 中的 MyClass 類。可以使用 C# 中的 sealed 關鍵字來實現此目標。下面的程式碼示例向我們展示瞭如何在 C# 的類宣告中使用 sealed 關鍵字。

public sealed class MySealedClass {...}

上面的程式碼使我們無法在 C# 中繼承 MySealedClass 類。final 關鍵字還指定在 Java 中不能再沒有虛擬函式的定義。以下程式碼示例向我們展示瞭如何在 Java 的函式宣告中使用 final 關鍵字。

public class MyClass
{
    public final void myFinalFunction() {...}
}

這使我們無法在 Java 中對虛擬函式 myFinalFunction() 進行更多定義。我們可以使用 C# 中的 sealedoverride 關鍵字來複制此功能。以下程式碼示例向我們展示瞭如何在 C# 的函式宣告中使用 sealed 關鍵字。

public class MyChildClass : MyParentClass
{
    public sealed override void mySealedFunction() {...}
}

上面的程式碼使我們無法在 C# 中對虛擬函式 mySealedFunction() 進行更多定義。

Java 欄位初始化中的 final 關鍵字

如果用於欄位初始化,則 C# 中的 readonly 關鍵字與 Java 語言中的 final 關鍵字等效。以下程式碼示例向我們展示瞭如何在 Java 的欄位初始化中使用 final 關鍵字。

public final float g = 10;

這樣可以防止我們在 Java 中更改 g 的值。可以使用 C# 中的 readonly 關鍵字來實現此目標。下面的程式碼示例向我們展示瞭如何在 C# 的欄位初始化中使用 readonly 關鍵字。

public readonly float g = 10;

這樣可以防止我們在 C# 中更改 g 的值。

相關文章 - Csharp Keyword

  • C# 中的 nameof 表示式