VieTopik
Thư việnLuyện thiGóc học tậpĐánh dấu
Tải app
  • Thư viện
  • Luyện thi
  • Góc học tập
  • Đánh dấu
C# Core

Bài 7/7

Class và object

4 phút đọc

Nội dung bài

  1. 1.Khái niệm
  2. 2.Ví dụ
  3. 3.Thử ngay
  4. 4.Lỗi hay gặp
  5. 5.Tóm tắt

Tới giờ bạn mới dùng các kiểu có sẵn như int, string, List<T>. Nhưng một sản phẩm trong cửa hàng có cả tên, giá và cách tính tiền, không kiểu có sẵn nào chứa hết được. Bài này hướng dẫn bạn tự tạo kiểu riêng bằng class.

Khái niệm

📐 Class: kiểu dữ liệu do bạn tự định nghĩa, gom dữ liệu và hành vi liên quan vào một chỗ.

📦 Object: một giá trị cụ thể được tạo ra từ class bằng từ khoá new.

🏷️ Field: biến khai báo bên trong class, mỗi object giữ một bản riêng.

Class chỉ là phần mô tả. Muốn dùng thì phải tạo object từ nó, và một class tạo được bao nhiêu object cũng được.

Ví dụ

var pen = new Product();
pen.Name = "Bút bi";
pen.Price = 5000;

Console.WriteLine(pen.TotalFor(2)); // 10000

class Product
{
    public string Name = "";   // mặc định là chuỗi rỗng
    public decimal Price;

    public decimal TotalFor(int quantity)
    {
        return Price * quantity;
    }
}
  • class Product khai báo hai field (Name, Price) và một method (TotalFor).
  • new Product() tạo một object, biến pen giữ object đó.
  • Dấu chấm truy cập field và method của object: pen.Price, pen.TotalFor(2). Bên trong TotalFor, Price chính là giá của pen.

Thử ngay

Chép ví dụ trên vào Program.cs, thay bốn dòng đầu bằng đoạn sau rồi chạy dotnet run:

var pen = new Product();
pen.Name = "Bút bi";
pen.Price = 5000;

var notebook = new Product();
notebook.Name = "Vở";
notebook.Price = 12000;

pen.Price = 6000;

Console.WriteLine($"{pen.Name}: {pen.Price}");
Console.WriteLine($"{notebook.Name}: {notebook.Price}");

Đoán trước khi chạy: đổi giá pen thành 6000 thì giá notebook có đổi theo không?

Xem kết quả
Bút bi: 6000
Vở: 12000

Không đổi. pen và notebook là hai object riêng, mỗi object giữ Price của mình.

Lỗi hay gặp

Khai báo biến nhưng quên new. Biến chưa trỏ tới object nào nên không dùng được.

// SAI — lỗi compile: biến chưa được gán
Product pen;
pen.Price = 5000;
// ĐÚNG — tạo object trước rồi mới dùng
var pen = new Product();
pen.Price = 5000;

Tóm tắt

  • Class mô tả dữ liệu (field) và hành vi (method).
  • new tạo object từ class, mỗi object giữ field riêng.
  • Dấu chấm truy cập field và method: pen.Price, pen.TotalFor(2).

Tự kiểm tra

0/3 câu
Câu 1

Class Customer có field public string Name = "". Chạy: var a = new Customer(); var b = new Customer(); a.Name = "An"; Console.WriteLine(b.Name); In ra gì?

Câu 2

Trong dòng var cart = new Cart(); thì Cart và cart lần lượt là gì?

Câu 3

Field khác biến khai báo bên trong method ở điểm nào?

Method