Menu
CoddyTech

Lớp 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 13 trên 70.

Khi một lớp chỉ chứa các thành viên static và bạn không bao giờ cần tạo thực thể từ lớp đó, bạn có thể khai báo toàn bộ lớp là static. Điều này cho trình biên dịch biết rằng không thể tạo thực thể từ lớp và lớp đó chỉ có thể chứa các thành viên static.

public static class MathHelper
{
    public static double Pi = 3.14159;
    
    public static int Square(int number)
    {
        return number * number;
    }
    
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

Bạn dùng lớp tĩnh giống như thành viên tĩnh, bằng cách gọi trực tiếp chúng qua tên lớp:

int result = MathHelper.Square(5);
double pi = MathHelper.Pi;

Các lớp tĩnh có những hạn chế quan trọng. Bạn không thể tạo một đối tượng của lớp bằng new, chúng không thể có hàm khởi tạo của đối tượng và không thể được kế thừa. Chúng chỉ có thể chứa các trường, thuộc tính và phương thức tĩnh.

Các lớp Console và Math mà bạn đã dùng là những ví dụ điển hình về lớp tĩnh. Chúng cung cấp các tiện ích mà không cần trạng thái của đối tượng. Lớp tĩnh phù hợp để nhóm các phương thức hỗ trợ hoặc hằng số có liên quan, không cần dữ liệu riêng cho từng đối tượng.

challenge icon

Thử thách

Dễ

Hãy tạo một tiện ích chuyển đổi nhiệt độ bằng cách dùng lớp static để nhóm các phương thức hỗ trợ có liên quan, không cần trạng thái của đối tượng.

Bạn sẽ tạo hai tệp để sắp xếp code:

  • TemperatureConverter.cs: Định nghĩa lớp static có tên TemperatureConverter trong namespace Utilities. Lớp này cần có:
    • Một trường static AbsoluteZeroCelsius có giá trị -273.15
    • Một phương thức static CelsiusToFahrenheit(double celsius) chuyển đổi độ Celsius sang độ Fahrenheit theo công thức: (celsius * 9 / 5) + 32
    • Một phương thức static FahrenheitToCelsius(double fahrenheit) chuyển đổi độ Fahrenheit sang độ Celsius theo công thức: (fahrenheit - 32) * 5 / 9
    • Một phương thức static IsAboveAbsoluteZero(double celsius) trả về true nếu nhiệt độ cao hơn độ không tuyệt đối
  • Program.cs: Trong tệp chính, dùng lớp static để thực hiện các phép chuyển đổi. Đọc một giá trị nhiệt độ theo độ Celsius từ đầu vào, sau đó hiển thị kết quả chuyển đổi và xác thực.

Bạn sẽ nhận một đầu vào: giá trị nhiệt độ theo độ Celsius.

In kết quả theo định dạng sau:

{celsius}C = {fahrenheit}F
{fahrenheit}F = {convertedBack}C
Above Absolute Zero: {True/False}
Absolute Zero: {AbsoluteZeroCelsius}C

Ví dụ, nếu đầu vào là 25, đầu ra sẽ là:

25C = 77F
77F = 25C
Above Absolute Zero: True
Absolute Zero: -273.15C

Hãy nhớ rằng bạn không thể khởi tạo lớp static. Bạn sẽ gọi trực tiếp tất cả phương thức bằng tên lớp, như TemperatureConverter.CelsiusToFahrenheit(25).

Tự làm thử

using System;
using Utilities;

class Program
{
    public static void Main(string[] args)
    {
        // Đọc nhiệt độ theo độ C
        double celsius = Convert.ToDouble(Console.ReadLine());
        
        // TODO: Dùng các phương thức (method) tĩnh của TemperatureConverter để:
        // 1. Chuyển celsius sang fahrenheit
        // 2. Chuyển fahrenheit về celsius
        // 3. Kiểm tra nhiệt độ có cao hơn độ không tuyệt đối không
        // 4. Lấy hằng số (constant) độ không tuyệt đối
        
        // TODO: In kết quả theo định dạng yêu cầu:
        // {celsius}C = {fahrenheit}F
        // {fahrenheit}F = {convertedBack}C
        // Above Absolute Zero: {True/False}
        // Absolute Zero: {AbsoluteZeroCelsius}C
        
    }
}
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