Lập trình hướng đối tượng C#

Đa hình trong C#

Trong bài học này, bạn sẽ dùng tính đa hình để gọi cùng một phương thức cho nhiều loại hình khác nhau qua một kiểu chung.

Giới thiệu

Đa hình (polymorphism) cho phép làm việc với nhiều loại đối tượng thông qua một kiểu chung, mà không cần dùng if để kiểm tra từng loại. Mỗi loại đối tượng tự quyết định cách thực hiện phương thức của mình.

Class trừu tượng Shape khai báo phương thức Area() mà không cài đặt, còn Circle và Square mỗi class tự cài đặt cách tính diện tích riêng bằng override. Dù biến shape trong vòng lặp có kiểu chung là Shape, chương trình vẫn tự gọi đúng phiên bản của từng đối tượng khi chạy, cho kết quả 12.57 và 9.00.

Ví dụ C# chạy được

C#
Chạy code →
Program.cs
using System;

abstract class Shape { public abstract double Area(); }
class Circle(double radius) : Shape { public override double Area() => Math.PI * radius * radius; }
class Square(double side) : Shape { public override double Area() => side * side; }

class Program
{
    static void Main()
    {
        Shape[] shapes = { new Circle(2), new Square(3) };
        foreach (Shape shape in shapes) Console.WriteLine($"{shape.Area():F2}");
    }
}
Kết quả khi chạy
12.57
9.00

Luyện tập với trình gỡ lỗi

Đặt breakpoint ở một phép gán hoặc điều kiện quan trọng, bấm Debug và xem giá trị các biến cục bộ (local variable) trước khi bước sang dòng tiếp theo.

Luyện tập với thử thách

Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.

Tất cả thử thách