Menu
CoddyTech

Hàm khởi tạo

Thuộc phần Lập trình hướng đối tượng trong hành trình C# của Coddy. Bài học 7 trên 70.

Hàm khởi tạo (constructor) là một phương thức (method) đặc biệt chạy khi bạn tạo một đối tượng (object). Hàm này khởi tạo các thuộc tính (properties) và trường (fields) của đối tượng.

Hàm khởi tạo mặc định không có tham số

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    
    // Hàm khởi tạo mặc định
    public Book()
    {
        Title = "Unknown";
        Author = "Unknown";
    }
}

Hàm khởi tạo có tham số

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    
    // Hàm khởi tạo có tham số
    public Book(string title, string author)
    {
        Title = title;
        Author = author;
    }
}

Nạp chồng hàm khởi tạo, nhiều hàm khởi tạo

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public int Pages { get; set; }
    
    // Hàm khởi tạo có hai tham số
    public Book(string title, string author)
    {
        Title = title;
        Author = author;
        Pages = 0;
    }
    
    // Hàm khởi tạo có ba tham số
    public Book(string title, string author, int pages)
    {
        Title = title;
        Author = author;
        Pages = pages;
    }
}

Chuỗi gọi hàm khởi tạo bằng this

public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public int Pages { get; set; }
    
    // Hàm khởi tạo chính
    public Book(string title, string author, int pages)
    {
        Title = title;
        Author = author;
        Pages = pages;
    }
    
    // Gọi hàm khởi tạo chính với số trang mặc định
    public Book(string title, string author) : this(title, author, 0)
    {
    }
}

Tạo đối tượng bằng các hàm khởi tạo khác nhau

Book book1 = new Book("1984", "George Orwell");
Book book2 = new Book("Harry Potter", "J.K. Rowling", 500);

Hàm khởi tạo có tên giống với lớp và không có kiểu trả về. Hàm khởi tạo tự động chạy khi bạn dùng từ khóa new. Bạn có thể có nhiều hàm khởi tạo với các tham số khác nhau (nạp chồng).

challenge icon

Thử thách

Trung bình

Tạo ba hàm khởi tạo cho lớp Product bằng cách nạp chồng và nối chuỗi hàm khởi tạo:

  • Hàm khởi tạo có 3 tham số: name, price và stock
  • Hàm khởi tạo có 2 tham số: name và price (stock mặc định là 0)
  • Hàm khởi tạo mặc định không có tham số (name = "Unknown", price = 0, stock = 0)

Dùng this để nối chuỗi hàm khởi tạo và tránh lặp code.

Tự làm thử

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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch C# online