10 Phương thức khởi tạo

Trong C#, phương thức khởi tạo (constructor) là một phương thức đặc biệt được gọi tự động khi một đối tượng của lớp được tạo ra. Nó có cùng tên với lớp và không có kiểu trả về, kể cả void. Phương thức khởi tạo được sử dụng để thiết lập các giá trị ban đầu cho các thuộc tính của đối tượng hoặc thực hiện các thao tác cần thiết khi đối tượng được khởi tạo.

Cú pháp khai báo phương thức khởi tạo

Phương thức khởi tạo được khai báo bên trong lớp với tên trùng với tên lớp và không có kiểu trả về. Bạn có thể định nghĩa nhiều phương thức khởi tạo trong một lớp, miễn là chúng có danh sách tham số khác nhau (nạp chồng phương thức khởi tạo).

Ví dụ:

public class Product
{
    private string name;
    private decimal price;

    // Phương thức khởi tạo không tham số
    public Product()
    {
        name = "Không tên";
        price = 0;
    }

    // Phương thức khởi tạo với tham số
    public Product(string name, decimal price)
    {
        this.name = name;
        this.price = price;
    }

    // Thuộc tính Name
    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    // Thuộc tính Price
    public decimal Price
    {
        get { return price; }
        set { price = value; }
    }
}

Trong ví dụ trên, lớp Product có hai phương thức khởi tạo: một không tham số và một có tham số. Phương thức khởi tạo không tham số thiết lập các thuộc tính nameprice với giá trị mặc định, trong khi phương thức khởi tạo có tham số cho phép thiết lập các thuộc tính này với các giá trị được truyền vào khi tạo đối tượng.

Sử dụng phương thức khởi tạo

Khi tạo một đối tượng mới bằng từ khóa new, phương thức khởi tạo tương ứng sẽ được gọi.

Ví dụ:

Product product1 = new Product();
Console.WriteLine(product1.Name); // Output: Không tên

Product product2 = new Product("Laptop", 1500);
Console.WriteLine(product2.Name); // Output: Laptop

Trong đoạn mã trên, product1 được tạo bằng phương thức khởi tạo không tham số, do đó Name sẽ là “Không tên”. Ngược lại, product2 được tạo bằng phương thức khởi tạo có tham số, với Name là “Laptop”.

Phương thức khởi tạo trong kế thừa

Trong C#, khi một lớp kế thừa từ lớp khác, phương thức khởi tạo của lớp cơ sở có thể được gọi bằng từ khóa base. Điều này cho phép lớp dẫn xuất khởi tạo các thành viên được thừa kế từ lớp cơ sở.

Ví dụ:

public class Category
{
    public string Name { get; set; }

    public Category(string name)
    {
        Name = name;
    }
}

public class CategoryMobile : Category
{
    public string Description { get; set; }

    public CategoryMobile(string name, string description)
        : base(name)
    {
        Description = description;
    }
}

Trong ví dụ này, lớp CategoryMobile kế thừa từ lớp Category. Phương thức khởi tạo của CategoryMobile gọi phương thức khởi tạo của Category bằng từ khóa base để thiết lập thuộc tính Name.

Phương thức khởi tạo riêng tư

Phương thức khởi tạo có thể được khai báo với phạm vi truy cập private. Điều này ngăn không cho các đối tượng được tạo từ bên ngoài lớp và thường được sử dụng trong các mẫu thiết kế như Singleton.

Ví dụ:

public class MyLib
{
    public static double PI = 3.14;

    private MyLib()
    {
        // Phương thức khởi tạo riêng tư
    }
}

Trong ví dụ này, phương thức khởi tạo của MyLibprivate, do đó không thể tạo đối tượng của MyLib từ bên ngoài lớp.

Phương thức khởi tạo tĩnh

Phương thức khởi tạo tĩnh được sử dụng để khởi tạo các thành viên tĩnh của lớp. Nó được gọi tự động trước khi bất kỳ thành viên tĩnh nào được truy cập hoặc trước khi bất kỳ phiên bản nào của lớp được tạo.

Ví dụ:

public class MyColorCode
{
    public static string ColorPrimary;
    public static string ColorSuccess;

    static MyColorCode()
    {
        ColorPrimary = "Navy";
        ColorSuccess = "Green";
    }
}

Trong ví dụ này, phương thức khởi tạo tĩnh MyColorCode được sử dụng để thiết lập các giá trị ban đầu cho các thành viên tĩnh ColorPrimaryColorSuccess.

Việc hiểu và sử dụng đúng các loại phương thức khởi tạo trong C# giúp bạn kiểm soát tốt hơn quá trình khởi tạo đối tượng và quản lý tài nguyên trong ứng dụng của mình.

Để lại một bình luận 0

Your email address will not be published. Required fields are marked *