"ฉันอยากจะบอกคุณเกี่ยวกับการกำหนดค่าเริ่มต้นของวัตถุเมื่อคุณสร้างวัตถุ คุณต้องกำหนดค่าเริ่มต้นให้กับตัวแปรเพื่อหลีกเลี่ยงสถานการณ์ที่คุณเข้าถึงวัตถุที่ไม่มีข้อมูลที่จำเป็นสำหรับการทำงานอย่างถูกต้อง"
"ลองพิจารณาวัตถุไฟล์ข้อมูลที่จำเป็นขั้นต่ำสำหรับไฟล์คือชื่อ มันไร้สาระที่จะสร้างไฟล์ที่ไม่มีชื่อ "
"สมมติว่าเราเขียนคลาส MyFile เพื่อทำงานกับไฟล์ ข้อมูลใดที่จำเป็นสำหรับแต่ละอ็อบเจกต์"
"ชื่อของไฟล์ที่เกี่ยวข้องกับวัตถุ?"
"ถูกต้อง ในการทำเช่นนี้ เราเพิ่ม เมธอด initialize () ให้กับคลาสของเรา นี่คือลักษณะที่ปรากฏ"
class MyFile
{
private String filename = null;
public void initialize(String name)
{
this.filename = name;
}
…
}
"เราได้เพิ่มinitialize method เพื่อให้ทำงานกับ object ได้ด้วยการเรียก method เราสามารถเรียก method ของ object ได้ทันทีหลังจากเรียก initialize method ถ้าเราไม่สามารถทำงานกับ object เราจะเรียกมันว่าinvalidมิฉะนั้น เราบอกว่า object is validงานหลักของเมธอด initialize คือการรับข้อมูลทั้งหมดที่อ็อบเจกต์ต้องการเพื่อทำให้ถูกต้อง "
"ฉันเห็น."
"ตอนนี้มาทำให้งานของเรายากขึ้น หรือถ้าคิดอีกที ให้ง่ายขึ้น ขึ้นอยู่กับว่าคุณมองมันอย่างไร สมมติว่าโปรแกรมเมอร์ที่ใช้คลาสของเราจะสะดวกกว่าที่จะส่งแค่ไดเร็กทอรีของไฟล์และชื่อย่อแทนที่จะเป็นพาธแบบเต็ม เราสามารถสร้างinitialize method อื่นได้ ( Java ให้เราสร้าง method ต่างๆ ที่มีชื่อเหมือนกัน ) เพื่อให้โปรแกรมเมอร์ทำสิ่งนี้ คลาสของเราจะมีลักษณะดังนี้:"
class MyFile
{
private String filename = null;
public void initialize(String name)
{
this.filename = name;
}
public void initialize(String folder, String name)
{
this.filename = folder + name;
}
…
}
"อีกสิ่งหนึ่ง: เรามักจะต้องสร้างสำเนาชั่วคราวของไฟล์ถัดจากไฟล์ปัจจุบัน"
"เราสามารถสร้างวิธีการทำสิ่งนี้ได้หรือไม่"
"แน่นอน ดูสิ"
class MyFile
{
private String filename = null;
public void initialize(String name)
{
this.filename = name;
}
public void initialize(String folder, String name)
{
this.filename = folder + name;
}
// The filename will be stored in the same directory as file.
public void initialize(MyFile file, String name)
{
this.filename = file.getFolder() + name;
}
…
}
"และฉันสามารถสร้างวิธีการเหล่านี้ได้มากเท่าที่ต้องการหรือไม่"
“อืม มีเหตุผล แต่โดยทางเทคนิคแล้ว ใช่ ได้มากเท่าที่คุณต้องการ”
"ฉันต้องเรียกเมธอด initialize เมื่อใด"
"ทันทีหลังจากสร้างวัตถุ เพื่อให้มันใช้ได้"
ตัวอย่าง: |
---|
|
|
|
"เมธอด getFolder() นี้คืออะไร"
"เราไม่ได้แสดงรหัสที่นี่จริง ๆ มันแสดงถึงวิธีการที่ส่งคืนสตริงพร้อมชื่อโฟลเดอร์ที่เก็บไฟล์ของเรา"
GO TO FULL VERSION