Getters และ Setters ใน Java อธิบาย

Getters และ setters ใช้เพื่อปกป้องข้อมูลของคุณโดยเฉพาะเมื่อสร้างคลาส

สำหรับตัวแปรอินสแตนซ์แต่ละตัวเมธอด getter จะส่งคืนค่าในขณะที่เมธอด setter ตั้งค่าหรืออัพเดตค่า ด้วยเหตุนี้ getters และ setters จึงเรียกอีกอย่างว่าaccessorsและmutatorsตามลำดับ

ตามแบบแผน getters เริ่มต้นด้วยคำว่า "get" และ setters ด้วยคำว่า "set" ตามด้วยชื่อตัวแปร ในทั้งสองกรณีอักษรตัวแรกของชื่อตัวแปรจะเป็นตัวพิมพ์ใหญ่:

public class Vehicle { private String color; // Getter public String getColor() { return color; } // Setter public void setColor(String c) { this.color = c; } }

เมธอด getter ส่งคืนค่าของแอตทริบิวต์ เมธอด setter รับพารามิเตอร์และกำหนดให้กับแอ็ตทริบิวต์

เมื่อกำหนด getter และ setter แล้วเราจะใช้มันในหลักของเรา:

public static void main(String[] args) { Vehicle v1 = new Vehicle(); v1.setColor("Red"); System.out.println(v1.getColor()); } // Outputs "Red"

Getters และ setters อนุญาตให้ควบคุมค่าต่างๆ คุณสามารถตรวจสอบความถูกต้องของค่าที่กำหนดใน setter ก่อนที่จะตั้งค่าจริง

ทำไมต้องใช้ getters และ setters?

Getters และ setters ช่วยให้คุณควบคุมวิธีการเข้าถึงและอัพเดตตัวแปรที่สำคัญในโค้ดของคุณ ตัวอย่างเช่นพิจารณาวิธีการตั้งค่านี้:

public void setNumber(int number) { if (number  10) { throw new IllegalArgumentException(); } this.number = num; }

เมื่อใช้setNumberวิธีนี้คุณสามารถมั่นใจได้ว่าค่าของnumberอยู่ระหว่าง 1 ถึง 10 เสมอซึ่งดีกว่าการอัปเดตnumberตัวแปรโดยตรง:

obj.number = 13;

หากคุณอัปเดตnumberโดยตรงอาจเป็นไปได้ว่าคุณจะทำให้เกิดผลข้างเคียงโดยไม่ได้ตั้งใจที่อื่นในโค้ดของคุณ ที่นี่การตั้งค่าnumberเป็น 13 เป็นการละเมิดข้อ จำกัด 1 ถึง 10 ที่เราต้องการสร้าง

การสร้างnumberตัวแปรส่วนตัวและใช้setNumberวิธีนี้จะป้องกันไม่ให้สิ่งนี้เกิดขึ้น

ในทางกลับกันวิธีเดียวที่จะอ่านค่าของnumberคือใช้เมธอด getter:

public int getNumber() { return this.number; }