コンストラクター
CoddyのC#ジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 7/70。
コンストラクタは、オブジェクトを作成するときに実行される特別なメソッドです。それはオブジェクトのプロパティとフィールドを初期化します。
引数なしのデフォルトコンストラクタ
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// デフォルトコンストラクタ
public Book()
{
Title = "Unknown";
Author = "Unknown";
}
}引数付きコンストラクタ
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
// 引数付きコンストラクタ
public Book(string title, string author)
{
Title = title;
Author = author;
}
}コンストラクタのオーバーロード - 複数のコンストラクタ
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
// 2つのパラメータを持つコンストラクタ
public Book(string title, string author)
{
Title = title;
Author = author;
Pages = 0;
}
// 3つのパラメータを持つコンストラクタ
public Book(string title, string author, int pages)
{
Title = title;
Author = author;
Pages = pages;
}
}this を使用したコンストラクタチェーン
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public int Pages { get; set; }
// メインコンストラクタ
public Book(string title, string author, int pages)
{
Title = title;
Author = author;
Pages = pages;
}
// デフォルトのページ数でメインコンストラクタを呼び出す
public Book(string title, string author) : this(title, author, 0)
{
}
}異なるコンストラクタでオブジェクトを作成する
Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);コンストラクタはクラスと同じ名前を持ち、戻り値の型を持ちません。newキーワードを使用すると、自動的に実行されます。異なるパラメータを持つ複数のコンストラクタを作成できます(オーバーロード)。
チャレンジ
中級コンストラクタのオーバーロードとチェーンを使用して、Productクラスに3つのコンストラクタを作成してください:
- 3つのパラメータ(name、price、stock)を持つコンストラクタ
- 2つのパラメータ(name、price)を持つコンストラクタ(stockのデフォルト値は0)
- パラメータのないデフォルトコンストラクタ(name = "Unknown"、price = 0、stock = 0)
コードの重複を避けるために、thisを使用したコンストラクタチェーンを使用してください。
チートシート
コンストラクタは、オブジェクトを作成するときに実行される特別なメソッドです。オブジェクトのプロパティを初期化します。
コンストラクタはクラスと同じ名前を持ち、戻り値の型はありません。newキーワードを使用すると自動的に実行されます。
パラメータのないデフォルトコンストラクタ:
public class Book
{
public string Title { get; set; }
public Book()
{
Title = "Unknown";
}
}パラメータ化されたコンストラクタ:
public class Book
{
public string Title { get; set; }
public string Author { get; set; }
public Book(string title, string author)
{
Title = title;
Author = author;
}
}コンストラクタのオーバーロード - 異なるパラメータを持つ複数のコンストラクタ:
public class Book
{
public string Title { get; set; }
public int Pages { get; set; }
public Book(string title)
{
Title = title;
Pages = 0;
}
public Book(string title, int pages)
{
Title = title;
Pages = pages;
}
}コードの重複を避けるための、thisを使用したコンストラクタチェーン:
public class Book
{
public string Title { get; set; }
public int Pages { get; set; }
public Book(string title, int pages)
{
Title = title;
Pages = pages;
}
public Book(string title) : this(title, 0)
{
}
}異なるコンストラクタを使用したオブジェクトの作成:
Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);自分で試してみよう
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal price = decimal.Parse(Console.ReadLine());
int stock = int.Parse(Console.ReadLine());
Product product1 = new Product(name, price, stock);
Product product2 = new Product();
Product product3 = new Product("Keyboard", 79.99m);
Console.WriteLine($"Product 1: {product1.Name} - ${product1.Price} (Stock: {product1.Stock})");
Console.WriteLine($"Product 2: {product2.Name} - ${product2.Price} (Stock: {product2.Stock})");
Console.WriteLine($"Product 3: {product3.Name} - ${product3.Price} (Stock: {product3.Stock})");
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。