บทช่วยสอนJava

Java HOME Java Intro Java เริ่มต้น Java Syntax ความคิดเห็นของ Java ตัวแปร Java Java Data Types การหล่อแบบจาวา ตัวดำเนินการ Java Java Strings Java Math Java Booleans Java If...Else Java Switch Java ในขณะที่ลูป Java สำหรับลูป Java Break/ต่อ Java Arrays

เมธอดของจาวา

เมธอดของจาวา พารามิเตอร์เมธอด Java วิธี Java โอเวอร์โหลด ขอบเขต Java Java Recursion

คลาส Java

Java OOP Java Classes/Objects คุณสมบัติคลาส Java วิธีการคลาส Java Java Constructors Java Modifiers การห่อหุ้มด้วยจาวา แพ็คเกจ Java / API มรดกจาวา Java Polymorphism Java Inner Classes Java Abstraction อินเทอร์เฟซ Java Java Enums อินพุตผู้ใช้ Java Java วันที่ Java ArrayList Java LinkedList Java HashMap Java HashSet Java Iterator คลาส Java Wrapper ข้อยกเว้น Java Java RegEx Java Threads จาวา แลมบ์ดา

การจัดการไฟล์ Java

ไฟล์ Java Java สร้าง/เขียนไฟล์ Java อ่านไฟล์ Java ลบไฟล์

Java ฮาวทู

เพิ่มสองตัวเลข

Java Reference

คีย์เวิร์ด Java เมธอด Java String Java Math Methods

ตัวอย่าง Java

ตัวอย่าง Java Java Compiler แบบฝึกหัด Java Java Quiz ใบรับรอง Java


การห่อหุ้มด้วยจาวา


การห่อหุ้ม

ความหมายของEncapsulationคือการทำให้แน่ใจว่าข้อมูลที่ "ละเอียดอ่อน" ถูกซ่อนจากผู้ใช้ เพื่อให้บรรลุสิ่งนี้ คุณต้อง:

  • ประกาศตัวแปรคลาส/แอตทริบิวต์เป็น private
  • ให้สาธารณะได้รับ และกำหนดวิธีการในการเข้าถึงและปรับปรุงค่าของprivate ตัวแปร

รับและตั้งค่า

คุณได้เรียนรู้จากบทที่แล้วว่าprivateตัวแปรสามารถเข้าถึงได้ภายในคลาสเดียวกันเท่านั้น (คลาสภายนอกไม่สามารถเข้าถึงได้) อย่างไรก็ตาม สามารถเข้าถึงได้หากเราจัดเตรียมวิธีการรับและตั้งค่าแบบสาธารณะ

วิธี การgetคืนค่าตัวแปรและsetวิธีการตั้งค่า

ไวยากรณ์สำหรับทั้งคู่คือพวกเขาเริ่มต้นด้วยgetหรือsetตามด้วยชื่อของตัวแปรโดยมีตัวอักษรตัวแรกเป็นตัวพิมพ์ใหญ่:

ตัวอย่าง

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 has private access in Person
    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

เราใช้getName()and setName()method ในการเข้าถึงและอัปเดตตัวแปรแทน:

ตัวอย่าง

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เมธอดเท่านั้น)
  • ยืดหยุ่นได้: โปรแกรมเมอร์สามารถเปลี่ยนโค้ดได้ส่วนหนึ่งโดยไม่กระทบส่วนอื่นๆ
  • เพิ่มความปลอดภัยของข้อมูล