什麼是封裝?
Java 中的封裝就是隱藏某些東西如何運作的細節,同時仍然允許其他人使用它。您可以將資料(如變數)和方法(如函數)分組到一個單元中,稱為類別。您不是讓每個人都直接存取您的數據,而是提供方法(getter 和 setter)來控制數據的存取或更改方式。這樣,您可以保護您的資料並保持程式碼整潔和有條理,不會讓任何人弄亂內部運作,除非您願意。
使用方法
要在 Java 中使用封裝,您需要建立一個具有私有欄位的類,並提供公共方法(如 getter 和 setter)來存取和修改這些欄位。這確保了數據只能以受控方式更改。例如,如果您想建立一個 Person 類,其中名稱和年齡是私有的,您可以使用 getter 來檢索值並使用 setter 來更新它們。操作方法如下:
public class Person { // Private fields private String name; private int age; // Constructor public Person(String name, int age) { this.name = name; this.age = age; } // Getter for name public String getName() { return name; } // Setter for name public void setName(String name) { this.name = name; } // Getter for age public int getAge() { return age; } // Setter for age public void setAge(int age) { if(age > 0) { // Simple validation this.age = age; } else { System.out.println("Age must be positive."); } } } // Using the Person class public class Main { public static void main(String[] args) { Person person = new Person("John", 25); // Accessing fields using getters System.out.println(person.getName()); // Output: John System.out.println(person.getAge()); // Output: 25 // Modifying fields using setters person.setName("Jane"); person.setAge(30); System.out.println(person.getName()); // Output: Jane System.out.println(person.getAge()); // Output: 30 } }
讓我們分解
讓我們分解程式碼並逐步解釋每個部分:
1. 帶有私有欄位的類別定義
public class Person { // Private fields private String name; private int age; }
解釋:
這是 Person 類,我們在其中定義了兩個私有欄位:name(字串)和age(int)。透過將這些欄位設為私有,我們確保沒有其他類別可以直接存取或修改它們。這就是封裝的核心思想──隱藏物件的內部狀態。
2.構造函數
// Constructor public Person(String name, int age) { this.name = name; this.age = age; }
解釋:
建構函式在建立 Person 物件時對其進行初始化。它需要兩個參數:姓名和年齡,並將這些值分配給私有欄位。這確保了當創建新的 Person 物件時,它以有效資料開始。
3. Getter 和 Setter
// Getter for name public String getName() { return name; } // Setter for name public void setName(String name) { this.name = name; }
解釋:
建構函式在建立 Person 物件時對其進行初始化。它需要兩個參數:姓名和年齡,並將這些值分配給私有欄位。這確保了當創建新的 Person 物件時,它以有效資料開始。
4.年齡的Getter和Setter(帶驗證)
// Getter for age public int getAge() { return age; } // Setter for age public void setAge(int age) { if (age > 0) { // Simple validation this.age = age; } else { System.out.println("Age must be positive."); } }
解釋:
getter getAge() 的工作方式與 name 的 getAge() 方法相同,允許存取年齡欄位。
setAge() 方法不僅允許修改年齡字段,還添加了驗證檢查。 if 條件確保僅當年齡為正數時才設定年齡。如果提供了無效的年齡(例如負數),則設定器將阻止更新並列印訊息。這是封裝如何讓您控制可以設定的資料類型的範例。
5. 使用 Person 類別
// Using the Person class public class Main { public static void main(String[] args) { Person person = new Person("John", 25); // Accessing fields using getters System.out.println(person.getName()); // Output: John System.out.println(person.getAge()); // Output: 25 // Modifying fields using setters person.setName("Jane"); person.setAge(30); System.out.println(person.getName()); // Output: Jane System.out.println(person.getAge()); // Output: 30 } }
解釋:
在本節中,我們使用建構函式建立一個 Person 物件(person)。建構函數將初始名稱設定為“John”,年齡設定為 25。
然後,我們使用 getter(getName() 和 getAge())來列印 name 和age 的值。之後,我們使用 setter(setName() 和 setAge())來更新值。最後,再次使用 getter 列印更新後的值。
封裝實務重點:
-
資料保護:
私有欄位不能從類別外部直接存取或修改。
-
受控存取:
getter 和 setter 提供了一種存取和修改私有欄位的受控方式。
-
驗證:
年齡的設定器示範如何強制執行規則(例如,年齡必須為正)以保護資料免受無效輸入的影響。
以上是什麼是封裝以及如何使用它。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Java在不同操作系統上的表現存在細微差異。 1)JVM實現不同,如HotSpot、OpenJDK,影響性能和垃圾回收。 2)文件系統結構和路徑分隔符不同,需使用Java標準庫處理。 3)網絡協議實現差異影響網絡性能。 4)GUI組件外觀和行為在不同系統上有別。通過使用標準庫和虛擬機測試,可減少這些差異的影響,確保Java程序穩定運行。

javaoffersrobustobject-IentiendedProgrammming(OOP)和Top-Notchsecurityfeatures.1)OopinjavainCludesClasses,對象,繼承,多態性,和列出,andeclingfleximaintainablesys.ss.2)SecurityFeateTuersLudEtersludEterMachine(

JavaScriptandJavahavedistinctstrengths:JavaScriptexcelsindynamictypingandasynchronousprogramming,whileJavaisrobustwithstrongOOPandtyping.1)JavaScript'sdynamicnatureallowsforrapiddevelopmentandprototyping,withasync/awaitfornon-blockingI/O.2)Java'sOOPf

JAVAACHIEVESPLATFORMINDEPENTENCETHROUGHJAVAVIRTAILMACHINE(JVM)和BYTECODE.1)THEJVMINTERPRETSBBYTECODE,允許theingthesmecodetorunonanyanyanyanyplatformwithajvm.2)

java'splatformendependecemeansapplicationscanrunonanyplatformwithajvm,使“ Writeonce,runanywhere”。

JVM'SperformanceIsCompetitiveWithOtherRuntimes,operingabalanceOfspeed,安全性和生產性。 1)JVMUSESJITCOMPILATIONFORDYNAMICOPTIMIZAIZATIONS.2)c提供NativePernativePerformanceButlanceButlactsjvm'ssafetyFeatures.3)

JavaachievesPlatFormIndependencEthroughTheJavavIrtualMachine(JVM),允許CodeTorunonAnyPlatFormWithAjvm.1)codeisscompiledIntobytecode,notmachine-specificodificcode.2)bytecodeisisteredbytheybytheybytheybythejvm,enablingcross-platerssectectectectectross-eenablingcrossectectectectectection.2)

TheJVMisanabstractcomputingmachinecrucialforrunningJavaprogramsduetoitsplatform-independentarchitecture.Itincludes:1)ClassLoaderforloadingclasses,2)RuntimeDataAreafordatastorage,3)ExecutionEnginewithInterpreter,JITCompiler,andGarbageCollectorforbytec


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)