作為 Codegym 大學課程一部分的導師授課片段。報名參加完整課程。


“現在是我告訴你構造函數的時候了。這是一個非常簡單的概念。程序員發明了一種創建和初始化對象的簡寫方法。

沒有構造函數 使用構造函數
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();

“剛學完初始化方法……”

“仔細看。有了構造函數,代碼更方便、更緊湊。”

“原來如此。這裡有一個問題。我知道如何在類中編寫初始化方法,但是如何編寫構造函數?”

“首先,看這個例子:”

沒有構造函數 使用構造函數
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;
  }}

“在類中聲明構造函數很容易。構造函數類似於初始化方法,只有兩個區別:

1.構造函數的名稱與類名相同(而不是初始化)。

2.構造函數沒有類型(未指示類型)。

“好的,所以它就像initialize,但有一些不同。我想我明白了。”