Java 中的受保護訪問修飾符和最終訪問修飾符


受保護和最終訪問修飾符決定了如何訪問類的成員或方法。修飾符在宣告成員時附加到成員上。我們知道這些訪問修飾符在 Java 面向物件概念(如封裝和繼承)中起著重要作用。它有助於防止濫用成員提供的功能。我們將嘗試透過示例程式來了解 Java 中的受保護和最終訪問修飾符。

Java 中的訪問修飾符

受保護訪問修飾符

它主要用於繼承的情況下,以控制父類成員和相應子類成員的訪問。它允許在當前包之外訪問元素,但僅限於類的直接子類。這裡,包是包含一組類的容器。

受保護訪問修飾符的一些示例 -

protected int data1 = 5;
protected double data2 = 5.55;

這裡,變數被宣告為受保護的。

示例

以下示例說明了在 Java 中使用受保護方法。

class Pack {  
   protected void prnt() {
     String msg = "Tutorials Point!!";
     System.out.print("Welcome to " + msg);
   }  
}  
public class ClassShow extends Pack {  
   public static void main(String args[]) { 
     // creating object of child class
     ClassShow obj = new ClassShow();  
     // method calling through object of child class
     obj.prnt();  
   }  
}  

輸出

Welcome to Tutorials Point!!

在上面的程式碼中,類“Pack”是“ClassShow”的父類。在父類中,我們聲明瞭一個名為“prnt()”的受保護方法來列印一條簡單訊息。在子類的 main() 方法中,我們定義了一個子類“ClassShow”的物件來呼叫受保護方法“prnt()”。

最終訪問修飾符

當類的任何成員或方法使用關鍵字“final”宣告為最終時,我們基本上透過阻止修改它們來使它們成為常量。最終成員必須在宣告時初始化,或者也可以在建構函式中初始化。大多數情況下,我們更傾向於在宣告期間進行初始化。

最終訪問修飾符的一些示例 -

final int pinCode = 500081;
protected double pi = 3.14;

這裡,變數被宣告為最終的。

Java 中的 final 關鍵字以三種不同的方式使用 -

  • 最終變數 - 我們不能修改最終變數的值,它更像是一個常量。

  • 最終方法 - 為了防止覆蓋,我們使方法成為最終的。我們在子類中覆蓋一個方法,以根據需要修改指定方法的功能。

  • 最終類 - 我們不能繼承最終類的屬性。

示例

以下示例說明了在 Java 中使用 final 關鍵字與方法。

Code:
class Pack {  
   public final void prnt() {
      String msg = "Tutorials Point!!";
      System.out.print("Welcome to " + msg);
   }
}  
public class ClassShow extends Pack {
   public final void prnt() {
      // overriding prnt method
      String msg = "Tutorix!!";
      System.out.print("Welcome to " + msg);
   }
   public static void main(String args[]) { 
      // creating object of child class
      ClassShow obj = new ClassShow();  
      // method calling through object of child class
      obj.prnt();  
   }  
}  

輸出

ClassShow.java:1: error: class, interface, enum, or record expected
Code:
^
1 error

在上面的程式碼中,類“Pack”是“ClassShow”的父類。在父類中,我們聲明瞭一個名為“prnt()”的最終方法來列印一條簡單訊息。在子類中,我們嘗試覆蓋“prnt()”方法以修改“msg”的值,並在其 main() 方法內部,我們定義了一個子類“ClassShow”的物件來呼叫最終方法“prnt()”。但是我們得到一個錯誤,指出我們不能覆蓋最終方法。

受保護與最終訪問修飾符

從上面的討論中,我們可以得出受保護和最終訪問修飾符之間以下差異的結論 -

受保護

最終

它是一個訪問修飾符,這意味著它可以控制變數和方法的訪問。

它實際上是一個非訪問修飾符,這意味著它可以控制類及其成員的行為。

我們不能將類定義為受保護的。

我們可以將類定義為最終的。

它適用於成員級別。

它適用於頂級。

我們使用 protected 關鍵字。

它需要 final 關鍵字。

受保護成員在包內以及其他包中都是可訪問的。但在其他包的情況下,它僅對繼承的類可訪問。

最終成員不能在當前包之外訪問。

結論

我們從定義受保護和最終訪問修飾符開始本文,並在後面的部分中,我們分別用示例詳細解釋了它們。最後,我們討論了它們之間的一些區別。

更新於: 2023年5月16日

867 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告