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 關鍵字。 |
受保護成員在包內以及其他包中都是可訪問的。但在其他包的情況下,它僅對繼承的類可訪問。 |
最終成員不能在當前包之外訪問。 |
結論
我們從定義受保護和最終訪問修飾符開始本文,並在後面的部分中,我們分別用示例詳細解釋了它們。最後,我們討論了它們之間的一些區別。