Trường và thuộc tính
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 6 trên 70.
Trường là các biến được khai báo trực tiếp trong lớp. Thuộc tính là các thành viên cung cấp quyền truy cập có kiểm soát vào trường bằng các bộ truy cập get và set.
Các trường lưu trữ dữ liệu trực tiếp
public class Person
{
// Các trường: lưu trữ biến trực tiếp
private string name;
private int age;
}Thuộc tính cung cấp quyền truy cập có kiểm soát thông qua get và set
public class Person
{
private string name;
// Thuộc tính có trường lưu trữ
public string Name
{
get { return name; }
set { name = value; }
}
}Thuộc tính tự triển khai (viết tắt)
public class Person
{
// Thuộc tính tự triển khai
public string Name { get; set; }
public int Age { get; set; }
}Thuộc tính có thể bao gồm logic xác thực
public class Person
{
private int age;
public int Age
{
get { return age; }
set
{
if (value >= 0 && value <= 120)
age = value;
}
}
}Thuộc tính chỉ đọc (chỉ có bộ truy cập get)
public class Circle
{
private double radius;
public double Radius
{
get { return radius; }
}
// Thuộc tính tính toán chỉ đọc
public double Area
{
get { return Math.PI * radius * radius; }
}
}Các trường thường ở dạng riêng tư và được truy cập thông qua thuộc tính. Thuộc tính cho phép bạn thêm logic, xác thực và kiểm soát cách truy cập hoặc chỉnh sửa dữ liệu. Thuộc tính tự triển khai rất tiện lợi khi bạn không cần thêm logic.
Thử thách
Trung bìnhTạo một lớp BankAccount để minh họa sự khác nhau giữa trường và thuộc tính:
- Một trường
balanceriêng tư để lưu số dư tài khoản - Một thuộc tính tự động triển khai
AccountName - Một thuộc tính chỉ đọc
Balancetrả về giá trị của trường số dư - Các phương thức
DepositvàWithdrawsửa đổi trường riêng tư
Tự làm thử
using System;
class Program
{
static void Main()
{
string accountName = Console.ReadLine();
decimal initialBalance = decimal.Parse(Console.ReadLine());
decimal depositAmount = decimal.Parse(Console.ReadLine());
BankAccount account = new BankAccount(accountName, initialBalance);
Console.WriteLine($"Account: {account.AccountName}");
Console.WriteLine($"Initial Balance: ${account.Balance}");
account.Deposit(depositAmount);
Console.WriteLine($"After Deposit: ${account.Balance}");
string result = account.Withdraw(2000);
Console.WriteLine($"Withdraw attempt: {result}");
Console.WriteLine($"Final Balance: ${account.Balance}");
}
}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
1Các khái niệm cơ bản về lập trình hướng đối tượng
Tệp bên ngoàiKhông gian tên và chỉ thịGiới thiệu về lớp và đối tượngTừ khóa thisPhương thức và tham sốTrường và thuộc tínhHàm khởi tạoKhởi tạo đối tượngÔn tập: Máy tính đơn giản4Kế thừa
Cú pháp kế thừa cơ bản (:)Từ khóa 'base'Từ khóa virtual và overrideLớp sealedLớp cơ sở 'object'Ôn tập: hệ phân cấp nhân viên7Tính năng nâng cao
Nạp chồng toán tửBộ lập chỉ mục (this[])Ghi đè ToString()Phương thức mở rộngÔn tập: Danh sách tùy chỉnh10Các mẫu thiết kế phần 1
Giới thiệu về mẫu thiết kếSingleton an toàn với luồngMẫu FactoryMẫu Observer (sự kiện)Mẫu Strategy2Thuộc tính và thành viên tĩnh
Thuộc tính tự độngThuộc tính chỉ đọc hoặc chỉ ghiTrường và phương thức tĩnhLớp tĩnhThành viên có thân biểu thức5Đa hình và interface
Đa hình lúc biên dịch và lúc chạyInterface và lớp trừu tượngNhiều interfaceInterface tường minhUpcasting và downcastingÔn tập: bộ tính toán hình học8Các khái niệm OOP nâng cao
Ưu tiên composition hơn kế thừaGenerics (lớp và phương thức)Delegate và sự kiệnAttribute và reflectionGiao diện IDisposable và câu lệnh usingKiến thức cơ bản về dependency injection11Các mẫu thiết kế phần 2
Mẫu lệnhMẫu bộ chuyển đổiMẫu trang tríMẫu phương thức khuôn mẫuMẫu trạng tháiMẫu tổ hợpTự luyện tập: Trình biên dịch C# online