ก่อนที่เราจะดำ ดิ่ง สู่แนวคิดนี้ คุณต้องทราบคลาสและการห่อหุ้มใน Java
การห่อหุ้มใน Java
Encapsulation ตามชื่อคือกระบวนการของการปิดล้อมข้อมูลและวิธีการเป็นหน่วยเดียว ในการเขียนโปรแกรมเชิงวัตถุสมาชิกข้อมูลของคลาสจะถูกทำให้เป็นส่วนตัวเพื่อจำกัดการเข้าถึงโดยตรง ดังนั้นสมาชิกข้อมูลที่ถูกห่อหุ้มจึงไม่สามารถดึงหรือแก้ไขได้หากไม่ได้กำหนดวิธีการอย่างถูกต้อง สำหรับสิ่งนี้ เรากำหนด accessor และ mutator method ใน Java เรามาดูรายละเอียดวิธีการเหล่านี้กันaccessors และ mutators ใน Java คืออะไร?
อุปกรณ์เสริม
ชื่อของเมธอด accessor ถูกขับเคลื่อนโดยคำว่า " การเข้าถึง " ซึ่งอนุญาตให้ผู้ใช้เข้าถึงข้อมูลส่วนตัวในคลาส หากคุณเคยได้ยินเมธอด “ get ” หรือ “ getters ” มาก่อน ก็จะเหมือนกับ accessors getters ดึงตัวแปรส่วนตัวและค่าคงที่เพื่อเข้าถึงนอกขอบเขตของคลาสไวยากรณ์
เราใช้คีย์เวิร์ด “ get ” สำหรับ Java accessors ในการเข้าถึงตัวแปร “ name ” เราสามารถใช้ getter getName()ต่อไปนี้ สำหรับตัวอย่างวิธีการเข้าถึง ให้ดูต่อไปนี้
public class Student {
private String name;
public String getName() {
return name;
}
}
โปรดทราบว่า getter แต่ละตัวมีคีย์เวิร์ด " get " ก่อนชื่อตัวแปรในลายเซ็นเมธอด และประเภทการส่งคืนจะเหมือนกับของตัวแปรที่จะส่งคืน เนื่องจากตัวแปร “ name ” เป็นประเภท “ String ” ดังนั้นเมธอด getter/accessor จึงส่งคืนค่า “ String ” ด้วย
มิวเตเตอร์
วิธี mutator ใน Java ขับเคลื่อนโดยคำว่า "mutate" ซึ่งหมายถึงการแก้ไขอย่างแท้จริง Mutators อนุญาตให้ผู้ใช้ตั้งค่า / เปลี่ยนแปลงค่าของตัวแปรส่วนตัวของวัตถุคลาส ในบริบทการเขียนโปรแกรมเชิงวัตถุ เมธอด “ set ” หรือ “ setters ” เรียกอีกอย่างว่ามิวเตเตอร์ ตัวตั้งค่าอำนวยความสะดวกในการห่อหุ้มเนื่องจากสมาชิกข้อมูลส่วนตัวไม่สามารถแก้ไขได้โดยตรง ดังนั้น setter method/mutators จะถูกใช้เพื่ออัพเดตค่าของตัวแปรนอกขอบเขตคลาสไวยากรณ์
สำหรับการกลายพันธุ์ เราใช้คีย์เวิร์ด " set " setter แต่ละตัวถูกกำหนดโดยคีย์เวิร์ด “set” ตามด้วยชื่อของตัวแปรที่จำเป็นต้องกลายพันธุ์ ที่นี่เราใช้ setter setName()ที่รับตัวแปรประเภทสตริงเป็นพารามิเตอร์
public class Student {
private String name;
public void setName(String name) {
this.name = name;
}
}
ทำไมเราต้องมีตัวเข้าถึงและตัวกลายพันธุ์?
เราต้องการ getters และ setters หรือ accessors และ mutators เพื่อปกป้องข้อมูลที่ละเอียดอ่อนในคลาส ข้อมูลได้รับการปกป้องจากการใช้ที่ผิดกฎหมายโดยใช้วิธีการมาตรฐานเหล่านี้ ยิ่งไปกว่านั้น ชุดข้อมูลในมิวเตเตอร์ยังสามารถตรวจสอบได้หากตรงตามข้อกำหนดทั้งหมดของโปรแกรมตัวอย่าง Accessor และ Mutator
โดยใช้คลาสนักเรียนด้านล่าง มาดูตัวอย่างวิธี accessor และ mutator กันตัวอย่าง
import java.util.Arrays;
public class Student {
private String name;
private Integer ID;
private String DOB;
private double GPA;
private String[] courses;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getID() {
return ID;
}
public void setID(Integer iD) {
this.ID = iD;
}
public String getDOB() {
return DOB;
}
public void setDOB(String dOB) {
this.DOB = dOB;
}
public double getGPA() {
return GPA;
}
public void setGPA(double gPA) {
this.GPA = gPA;
}
public String[] getCourses() {
return courses;
}
public void setCourses(String[] courses) {
this.courses = courses;
}
public static void main(String[] args) {
Student student1 = new Student();
System.out.println("Student Bio [ Before using Accessors & Mutators ]");
// calling accessor methods
System.out.print("Name: " + student1.getName());
System.out.print("\tID: " + student1.getID());
System.out.print("\tGPA: " + student1.getGPA());
System.out.print("\tDOB: " + student1.getDOB());
System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
// calling mutator methods
student1.setName("Alex Coy");
student1.setID(3115);
student1.setGPA(2.79);
student1.setDOB("08/08/1998");
String[] courses = { "Object Oriented Programming", "Cryptography", "Photography", "Network Security" };
student1.setCourses(courses);
System.out.println("\nStudent Bio [ After using Mutators & Accessors ]");
// calling accessor methods
System.out.print("Name: " + student1.getName());
System.out.print("\tID: " + student1.getID());
System.out.print("\tGPA: " + student1.getGPA());
System.out.print("\tDOB: " + student1.getDOB());
System.out.println("\tCourses: " + Arrays.toString(student1.getCourses()));
}
}
เอาต์พุต
ประวัตินักศึกษา [ ก่อนใช้ Accessors & Mutators ] ชื่อ: null ID: null GPA: 0.0 DOB: null หลักสูตร: null Student Bio [ หลังใช้ Mutators & Accessors ] ชื่อ: Alex Coy ID: 3115 GPA: 2.79 DOB: 08/08/1998 หลักสูตร: [การเขียนโปรแกรมเชิงวัตถุ การเข้ารหัส การถ่ายภาพ ความปลอดภัยเครือข่าย]
GO TO FULL VERSION