選單
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Java 教程

Java HOME Java Intro Java Get Started Java Syntax Java Output Java Comments Java Variables Java Data Types Java Type Casting Java Operators Java Strings Java Math Java Booleans Java If...Else Java Switch Java While Loop Java For Loop Java Break/Continue Java Arrays

Java Methods

Java Methods Java Method Parameters Java Method Overloading Java Scope Java Recursion

Java Classes

Java 面向物件程式設計 Java 類/物件 Java 類屬性 Java 類方法 Java 建構函式 Java 修飾符 Java 封裝 Java 包 / API Java 繼承 Java 多型 Java 內部類 Java 抽象 Java 介面 Java 列舉 Java 使用者輸入 Java 日期 Java ArrayList Java LinkedList Java 列表排序 Java HashMap Java HashSet Java 迭代器 Java 包裝類 Java 異常 Java 正則表示式 Java 執行緒 Java Lambda Java 高階排序

Java File Handling

Java Files Java Create/Write Files Java Read Files Java Delete Files

Java How To's

兩數相加 單詞計數 反轉字串 陣列元素求和 字串轉陣列 陣列排序 查詢陣列平均值 查詢最小元素 ArrayList 迴圈 HashMap 迴圈 遍歷列舉 矩形面積 偶數或奇數 正數或負數 平方根 隨機數

Java 參考

Java Reference Java Keywords Java String Methods Java Math Methods Java Output Methods Java Arrays Methods Java ArrayList Methods Java LinkedList Methods Java HashMap Methods Java Scanner Methods Java Iterator Methods Java Errors & Exceptions

Java 示例

Java Examples Java Compiler Java Exercises Java Quiz Java Server Java Certificate


Java 封裝


封裝

封裝 的含義是確保“敏感”資料對使用者隱藏。為了實現這一點,您必須:

  • 將類變數/屬性宣告為 private
  • 提供公共的 getset 方法來訪問和更新 private 變數的值

Get 和 Set

您從上一章瞭解到,private 變數只能在同一類中訪問(外部類無法訪問)。但是,如果我們提供公共的 getset 方法,就可以訪問它們。

get 方法返回變數值,set 方法設定變數值。

兩者的語法都是以 getset 開頭,後跟變數名,變數名的首字母大寫。

示例

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

  // Setter
  public void setName(String newName) {
    this.name = newName;
  }
}

示例說明

get 方法返回變數 name 的值。

set 方法接受一個引數 (newName) 並將其賦值給 name 變數。this 關鍵字用於引用當前物件。

然而,由於 name 變數被宣告為 private,我們不能從該類外部訪問它。

示例

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

執行示例 »

如果變數被宣告為 public,我們期望得到以下輸出:

John

但是,當我們嘗試訪問 private 變數時,會得到一個錯誤:

MyClass.java:4: error: name 在 Person 中具有私有訪問許可權
    myObj.name = "John";
         ^
MyClass.java:5: error: name 在 Person 中具有私有訪問許可權
    System.out.println(myObj.name);
                  ^
2 個錯誤

相反,我們使用 getName()setName() 方法來訪問和更新變數。

示例

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.setName("John"); // Set the value of the name variable to "John"
    System.out.println(myObj.getName());
  }
}

// Outputs "John"

自己動手試一試 »


為什麼使用封裝?

  • 更好地控制類屬性和方法。
  • 類屬性可以設定為只讀(如果只使用 get 方法),或只寫(如果只使用 set 方法)。
  • 靈活性:程式設計師可以更改程式碼的一部分,而不會影響其他部分。
  • 提高了資料安全性。



×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援