首頁 雲端運算與程式碼文章正文

在Java編程語言中,類的三種訪問權限的區別

雲端運算與程式碼 2023年05月14日 11:04 698 訪客

在Java編程語言中,類可以用public、protected或private關鍵字來指定訪問權限。這三種訪問權限有如下區別:


在Java編程語言中,類的三種訪問權限的區別 第1张

1. public訪問權限:


使用public關鍵字表示該類的成員可以被任何其他類訪問。對於public成員變量和成員函數,其他類可以直接訪問和調用,不需要繼承該類也可以使用。一般來說,public訪問權限用於指定開放的API,能夠方便其他開發人員使用。


2. protected訪問權限:


使用protected關鍵字表示該類的成員可以被該類的子類和同一包中的其他類訪問。使用protected訪問權限的成員只能在本類和其子類中訪問,在同一包中的其他類也可以訪問該成員。使用protected訪問權限能夠實現類成員的限制和封裝,並且也不會過度暴露使用細節。


3. private訪問權限:


使用private關鍵字表示該類的成員只能被該類的成員訪問。private訪問權限被用於強制實現類的封裝特性,使得除了改變私有成員的類之外,沒有其他任何代碼可以訪問或修改私有成員。在類的內部和嵌套類中可以訪問private成員,而在其他類中,private成員無法被訪問。


總結來說,public、protected和private訪問權限是三種不同的訪問級別,可以根據需要選擇合適的訪問級別來限制和保護類的成員。這樣可以實現更好的封裝,讓代碼更加安全和可靠。


下面是示例代碼演示三種訪問權限之間的區別:


public class ExampleClass {
   
    public int publicVar;       // 公有成員變量
    protected int protectedVar; // 受保護的成員變量
    private int privateVar;     // 私有成員變量
   
    public ExampleClass() {
        publicVar = 1;
        protectedVar = 2;
        privateVar = 3;
    }
   
    public void publicMethod() {
        System.out.println("This is a public method");
    }
   
    protected void protectedMethod() {
        System.out.println("This is a protected method");
    }
   
    private void privateMethod() {
        System.out.println("This is a private method");
    }
}
public class ChildClass extends ExampleClass {
   
    public ChildClass() {
        super();
    }
   
    // 覆蓋父類的protected方法
    @Override
    protected void protectedMethod() {
        System.out.println("This is a protected method in child class");
    }
}
public class TestClass {
   
    public static void main(String[] args) {
       
        ExampleClass obj = new ExampleClass();
       
        // 訪問公有成員變量和成員方法
        System.out.println(obj.publicVar);
        obj.publicMethod();
       
        // 訪問受保護的成員變量和成員方法
        obj.protectedVar = 10;
        obj.protectedMethod();
       
        // 私有成員無法在外部類中直接訪問
        // obj.privateVar = 20;
        // obj.privateMethod();
       
        ChildClass childObj = new ChildClass();
       
        // 這裏訪問父類的受保護的成員變量和成員方法,因為ChildClass繼承自ExampleClass,
        // 所以ChildClass可以在自己的方法和構造函數中通過super關鍵字訪問超類的受保護成員
        childObj.protectedVar = 30;
        childObj.protectedMethod();
    }
}


在上面的代碼中,我們定義了一個ExampleClass,並將其中的成員分別聲明為public、protected和private,然後創建了一個ChildClass作為ExampleClass的子類。在TestClass中,我們創建了一個ExampleClass的對象obj,並分別訪問了ExampleClass中的public、protected和private成員,結果表明:公有成員變量和成員方法可以被其他類直接訪問,受保護的成員變量和成員方法只能在繼承類中或者和ExampleClass在同一包內的類中訪問,而私有成員則只能在同一個類的成員函數中訪問,無法被其他類直接訪問。最後我們還創建了ChildClass類,並覆蓋了ExampleClass中的protectedMethod方法,並通過super關鍵字訪問了ExampleClass的受保護成員。

標籤: 類的三種訪問權限的區別

AmupuCopyright Amupu.Z-Blog.Some Rights Reserved.