Java 中 private 修飾符和 public 修飾符之間的區別
-
Java 中帶有
public
修飾符的方法 -
Java 中帶有
public
修飾符的變數 -
Java 中帶有
public
修飾符的建構函式 -
Java 中帶有
private
修飾符的方法 -
Java 中帶有
private
修飾符的變數 -
Java 中帶有
private
修飾符的建構函式
今天,我們將通過一些示例來更好地理解兩個訪問修飾符 private
和 public
之間的顯著差異。
Java 中帶有 public
修飾符的方法
當我們在方法中使用關鍵字 public
時,其範圍擴充套件到整個程式,這意味著該方法也可以被同一專案中其他包中的任何類和函式訪問。
為了演示這個場景,我們建立了三個類。ExampleClass1
和 ExampleClass2
這兩個類在同一個名為 com.tutorial
的包中,而第三個類 ExampleClass3
在另一個名為 com.tutorial.javcaTutorial
的包中。
在 ExampleClass1
類中,我們建立了一個帶有 public
關鍵字的方法 exampleFunc()
,其中包含一個 print 語句。接下來,我們通過建立一個 ExampleClass1
類物件在 ExampleClass2
類中呼叫此函式。
我們還從另一個包中的 ExampleClass3
呼叫 exampleFunc()
函式。整個程式執行沒有任何錯誤,這意味著所有這些類都可以訪問 public
方法。
package com.tutorial;
public class ExampleClass1 {
public void exampleFunc() {
System.out.println("exampleFunc() called");
}
}
package com.tutorial;
public class ExampleClass2 {
public static void main(String[] args) {
new ExampleClass1().exampleFunc();
}
}
package com.tutorial.javaTutorial;
import com.tutorial.ExampleClass1;
public class ExampleClass3 {
public static void main(String[] args) {
new ExampleClass1().exampleFunc();
}
}
輸出:
exampleFunc() called
Java 中帶有 public
修飾符的變數
可以從程式中的任何位置訪問公共變數。如下例所示,我們可以通過建立另一個類的物件來訪問 showMsg
變數。
public class ExampleClass1 {
public String showMsg = "This is a public variable";
}
class ExampleCLass extends ExampleClass1 {
public static void main(String[] args) {
System.out.println(new ExampleCLass().showMsg);
}
}
輸出:
This is a public variable
Java 中帶有 public
修飾符的建構函式
建構函式也可以像方法和變數一樣被設為 public
和 private
。如果它是 public
,我們可以像在這段程式碼中那樣在任何地方建立該類的物件。
package com.tutorial;
public class ExampleClass1 {
public String showMsg;
public ExampleClass1() {
showMsg = "Inside a constructor";
}
}
class ExampleCLass extends ExampleClass1 {
public static void main(String[] args) {
System.out.println(new ExampleCLass().showMsg);
}
}
輸出:
Inside a constructor
Java 中帶有 private
修飾符的方法
與 public
訪問修飾符不同,private
修飾符通過使超出範圍的類無法訪問其成員來限制其成員。
就像我們在上一節中所做的那樣,我們建立了三個類並嘗試從這兩個類中呼叫一個函式。但是我們使用了 private
修飾符而不是 public
,並且在執行程式時出現錯誤。
發生這種情況是因為 private
修飾符只允許在宣告它們的類中訪問其成員。
package com.tutorial;
public class ExampleClass1 {
private void exampleFunc() {
System.out.println("exampleFunc() called");
}
}
package com.tutorial;
public class ExampleClass2 {
public static void main(String[] args) {
new ExampleClass1().exampleFunc();
}
}
package com.tutorial.javaTutorial;
import com.tutorial.ExampleClass1;
public class ExampleClass3 {
public static void main(String[] args) {
new ExampleClass1().exampleFunc();
}
}
輸出:
java: exampleFunc() has private access in com.tutorial.ExampleClass1
Java 中帶有 private
修飾符的變數
即使變數在父類中,我們也無法從另一個類訪問私有變數。在以下示例中顯示,當從 ExampleCLass
訪問時,它會引發錯誤。
public class ExampleClass1 {
private String showMsg = "This is a public variable";
}
class ExampleCLass extends ExampleClass1 {
public static void main(String[] args) {
System.out.println(new ExampleCLass().showMsg);
}
}
輸出:
java: showMsg has private access in com.tutorial.ExampleClass1
Java 中帶有 private
修飾符的建構函式
與 private
關鍵字一起使用的建構函式會限制我們建立類的物件,因為建立物件需要建構函式。我們不能擴充套件該類,因為它的建構函式對子類不可用。
程式碼有兩個類,ExampleClass1
包含一個在類建構函式中初始化的變數。我們將此建構函式設為私有。
當我們在 ExampleCLass
中擴充套件 ExampleClass1
時,我們收到一條錯誤訊息,指出 ExampleCLass1()
具有 private
訪問許可權,因為它的建構函式是私有的。
package com.tutorial;
public class ExampleClass1 {
public String showMsg;
private ExampleClass1() {
showMsg = "Inside a constructor";
}
}
class ExampleCLass extends ExampleClass1 {
public static void main(String[] args) {
System.out.println(new ExampleCLass().showMsg);
}
}
輸出:
java: ExampleClass1() has private access in com.tutorial.ExampleClass1
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn