ตัวอย่างการบรรยายพร้อมผู้ให้คำปรึกษาซึ่งเป็นส่วนหนึ่งของหลักสูตร Codegym University ลงทะเบียนสำหรับหลักสูตรเต็ม


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

โดยไม่มีตัวสร้าง ด้วยตัวสร้าง
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");
String text = file.readText();
MyFile file = new MyFile("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("c:\data\", "a.txt");
String text = file.readText();
MyFile file = new MyFile();
file.initialize("c:\data\a.txt");

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


MyFile file2 = new MyFile(file, "a.txt");
String text = file2.readText();

"ฉันเพิ่งเสร็จสิ้นการเรียนรู้เกี่ยวกับวิธีการเริ่มต้น ... "

"ดูให้หนักขึ้น ด้วยตัวสร้าง โค้ดจะสะดวกและกะทัดรัดมากขึ้น"

"ใช่แล้ว นี่คือคำถาม ฉันรู้วิธีเขียนเมธอดinitializeภายในคลาส แต่ฉันจะเขียนคอนสตรัคเตอร์ได้อย่างไร"

"ก่อนอื่น ดูตัวอย่างนี้:"

โดยไม่มีตัวสร้าง ด้วยตัวสร้าง
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;
  }

  public void initialize(MyFile file, String name)
  {
    this.filename = file.getFolder() + name;
  }}
class MyFile
{
  private String filename = null;

  public MyFile(String name)
  {
    this.filename = name;
  }

  public MyFile(String folder, String name)
  {
    this.filename = folder + name;
  }

  public MyFile(MyFile file, String name)
  {
    this.filename = file.getFolder() + name;
  }}

"เป็นเรื่องง่ายที่จะประกาศตัวสร้างภายในคลาส ตัวสร้างนั้นคล้ายกับเมธอดinitializeโดยมีข้อแตกต่างเพียงสองประการ:

1. ชื่อคอนสตรัคเตอร์เหมือนกับชื่อคลาส (แทนที่จะเป็น initialize)

2. ตัวสร้างไม่มีประเภท (ไม่ระบุประเภท)"

"ตกลง มันเหมือนกับการ initializeแต่มีความแตกต่างเล็กน้อย ฉันคิดว่าฉันเข้าใจแล้ว"