Menu
Coddy logo textTech

コンストラクター

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キーワードを使用すると、自動的に実行されます。異なるパラメータを持つ複数のコンストラクタを作成できます(オーバーロード)。

challenge icon

チャレンジ

中級

コンストラクタのオーバーロードとチェーンを使用して、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})");
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

オブジェクト指向プログラミングのすべてのレッスン