首頁 > Java > java教程 > 主體

Java 中的私有

WBOY
發布: 2024-08-30 15:22:24
原創
1042 人瀏覽過

Java中的關鍵字「private」用於建立java程式碼區塊中類別、方法或變數的可存取性限制。如果一個類別、方法或變數在程式中稱為私有,則表示特定的類別、方法或變數不能被該類別或方法的外部訪問,這與公共方法不同。 Private 關鍵字通常在 Java 中完全封裝的類別中使用。

私人關鍵字在 Java 中如何運作?

Java 中的私人關鍵字在特定類別中工作。在課堂之外無法訪問它。它在類別/類別和介面/介面之外不起作用。如果類別的成員是 PRIVATE 並且在完全封裝的類別中也是如此,則 Private 關鍵字效果很好。 Private 關鍵字或變數或方法也可以使用某些存取修飾符來覆寫子類別/類,以呼叫類別外部的 PRIVATE METHOD。這樣,私有關鍵字也可以只使用私有存取修飾符在類別之外運作。

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

範例

以下是一些私有修飾符的範例,如下:

範例#1

這裡我們以 Private Access Modifier 為例,由於從類別 AB 存取私有資料成員,此範例顯示編譯錯誤,如下例所示。私有方法或私有成員只能在特定類別中存取。

代碼:

class AB{
private double number = 100;
private int squares(int a){
return a*a;
}
}
public class Main{
public static void main(String args[]){
AB obj = new AB();
System.out.println(obj.number);
System.out.println(obj.squares(10));
}
}
登入後複製

輸出:

Java 中的私有

範例#2

這是說明在以下程式中使用 PRIVATE 關鍵字的範例:

代碼:

class Emp{
private int id1;
private String name14;
private int age14;
public int getId1() {
return id1;
}
public void setId(int id1) {
this.id1 = id1;
}
public String getName14() {
return name14;
}
public void setName14(String name14) {
this.name14 = name14;
}
public int getAge14() {
return age14;
}
public void setAge14(int age14) {
this.age14 = age14;
}
}
public class Main{
public static void main(String args[]){
Emp e=new Emp();
e.setId(1473);
e.setName14("Pavan Kumar Sake");
e.setAge14(24);
System.out.println(e.getId1()+" "+e.getName14()+" "+e.getAge14());
}
}
登入後複製

輸出:

Java 中的私有

範例#3

在此範例中,您可以看到如何使用預設的存取修飾符將 PRIVATE METHOD 覆寫到子類別。我們甚至不允許從子類別呼叫父類別方法。

代碼:

class ABC{
private void msg()
{
System.out.println("Hey Buddy this is the parent class method"); //Output of the Private Method
}
}
public class Main extends ABC{ // Private method is overridden using the access modifier
void msg()
{
System.out.println("Buddy this is the child class method");
}
public static void main(String args[]){
Main obj=new Main();
obj.msg();
}
}
登入後複製

輸出:

Java 中的私有

範例#4

在此範例中,我說明不能在類別外部呼叫/呼叫 PRIVATE METHOD。現在,私有方法透過更改類別運行時行為從外部類別呼叫。

代碼:

import java.lang.reflect.Method;
class ABC {
private void display()
{
System.out.println("Hey Now private method is invoked/Called");
}
}
public class Main{
public static void main(String[] args)throws Exception{
Class d = Class.forName("ABC");
Object p= d.newInstance();
Method n =d.getDeclaredMethod("display", null);
n.setAccessible(true);
n.invoke(p, null);
}
}
登入後複製

輸出:

Java 中的私有

範例#5

這是 Java 程式語言中私有方法和欄位的範例。這裡私有方法在編譯時使用靜態綁定,甚至不能被覆寫。不要與 Private 變數輸出混淆,因為 Private 變數實際上可以在內部類別內部存取。如果在類別外部呼叫 PRIVATE 變量,編譯器肯定會產生錯誤。

代碼:

public class Main {
private String i_m_private1 = " \n Hey Buddy I am a private member and i am not even accessible outside of this Class";
private void privateMethod1() {
System.out.println("Outer Class Private Method");
}
public static void main(String args[]) {
Main outerClass = new Main();
NestedClass nestc = outerClass.new NestedClass();
nestc.showPrivate(); //This syntax shows private method/methods are accessible inside the class/inner class.
outerClass = nestc;
nestc.privateMethod1(); //It don't call/invoke private method from the inner class because
// you can not override the private method inside the inner class.
}
class NestedClass extends Main {
public void showPrivate() {
System.out.println("Now we are going to access Outer Class Private Method: " + i_m_private1);
privateMethod1();
}
private void privateMethod1() {
System.out.println("Nested Class's Private Method");
}
}
}
登入後複製

輸出:

Java 中的私有

優點

下面我們將解釋在 Java 中使用私有方法/欄位的優點。

  • 它也可以應用於Java程式語言中的方法、欄位和內部類別。
  • 我們不能將 private 指派給外部介面或類別。
  • 在 Java 程式語言中,頂層類別始終不能是 Private。
  • 當然,我們知道私有變數或私有方法不能在 java 類別之外訪問,但可以透過使用 setAccessible(true) 的反射並透過更改 PRIVATE 可見性以另一種方式存取它們。
  • 在 Java 程式語言中,此方法不能被重寫,即使不在內部類別中也是如此。
  • PRIVATE 成員允許 Java 虛擬機器和編譯器對其進行最佳化以獲得更好的效能。

Java 私有建構子的規則與規定

以下是您應該了解的一些私人規則和規定。

  • 如果類別包含私有建構函數,則無法從外部類別建立該特定類別的任何物件。
  • 您不應該在類別之外存取私人關鍵字。如果您嘗試,它將產生該行為的編譯錯誤。為此,您必須修改程式碼。
  • 在該 java 語言中頂層類別不能是私有的。

結論

主題即將結束,我們實際上很高興知道在 Java 中使用 Private Keyword 是多麼有用和簡單。在本文中,我希望您了解 private 關鍵字、私有變數、存取修飾符、私有建構函數,以及如何在程式中使用這些私有關鍵字。

以上是Java 中的私有的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!