"ฉันอยากจะบอกคุณเกี่ยวกับการกำหนดค่าเริ่มต้นของวัตถุเมื่อคุณสร้างวัตถุ คุณต้องกำหนดค่าเริ่มต้นให้กับตัวแปรเพื่อหลีกเลี่ยงสถานการณ์ที่คุณเข้าถึงวัตถุที่ไม่มีข้อมูลที่จำเป็นสำหรับการทำงานอย่างถูกต้อง"

"ลองพิจารณาวัตถุไฟล์ข้อมูลที่จำเป็นขั้นต่ำสำหรับไฟล์คือชื่อ มันไร้สาระที่จะสร้างไฟล์ที่ไม่มีชื่อ "

"สมมติว่าเราเขียนคลาส 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 เมื่อใด"

"ทันทีหลังจากสร้างวัตถุ เพื่อให้มันใช้ได้"

ตัวอย่าง:
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\", "a.txt");

String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

MyFile file2 = new MyFile();
file2.initialize("a.txt");

String text = file2.readText();

"เมธอด getFolder() นี้คืออะไร"

"เราไม่ได้แสดงรหัสที่นี่จริง ๆ มันแสดงถึงวิธีการที่ส่งคืนสตริงพร้อมชื่อโฟลเดอร์ที่เก็บไฟล์ของเรา"