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();

「初期化メソッドの学習が終わったところです…」

「よく見てください。コンストラクターを使用すると、コードはより便利でコンパクトになります。」

「そうです。ここで質問があります。クラス内に初期化メソッドを記述する方法は知っていますが、コンストラクターはどのように記述すればよいでしょうか?」

「まず、この例を見てください。」

コンストラクターなし コンストラクターを使用する場合
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;
  }

…
}

「クラス内でコンストラクターを宣言するのは簡単です。コンストラクターは初期化メソッドに似ていますが、異なる点は 2 つだけです。

1.コンストラクターの名前は (初期化ではなく) クラス名と同じです

2.コンストラクターには型がありません(型が示されていません)。

「わかりました。initializeと似ていますが、いくつかの違いがあります。理解できたと思います。」