×

Đa hình trong C# Static và Dynamic Polymorphism

Trong C#, đa hình (polymorphism) cho phép một đối tượng thực thi nhiều hành vi khác nhau dựa trên ngữ cảnh. Có hai loại đa hình chính: đa hình tĩnh (static polymorphism) và đa hình động (dynamic polymorphism).

  1. Đa hình tĩnh (Static Polymorphism):

    • Được thực hiện thông qua overloading (nạp chồng) các phương thức hoặc toán tử.
    • Ví dụ về phương thức nạp chồng:
      class MathOperations {
          public int Add(int a, int b) {
              return a + b;
          }
      
          public double Add(double a, double b) {
              return a + b;
          }
      }
      
  2. Đa hình động (Dynamic Polymorphism):

    • Được thực hiện thông qua overriding (ghi đè) phương thức trong lớp kế thừa và sử dụng interface.

    • Ví dụ về phương thức ghi đè:

      class Animal {
          public virtual void MakeSound() {
              Console.WriteLine("Some sound");
          }
      }
      
      class Dog : Animal {
          public override void MakeSound() {
              Console.WriteLine("Bark");
          }
      }
      
      class Cat : Animal {
          public override void MakeSound() {
              Console.WriteLine("Meow");
          }
      }
      
    • Ví dụ về sử dụng interface:

      interface IShape {
          void Draw();
      }
      
      class Circle : IShape {
          public void Draw() {
              Console.WriteLine("Drawing Circle");
          }
      }
      
      class Rectangle : IShape {
          public void Draw() {
              Console.WriteLine("Drawing Rectangle");
          }
      }
      

Trong trường hợp sử dụng đa hình động, bạn có thể gọi phương thức của lớp con thông qua đối tượng của lớp cha hoặc interface, và phương thức tương ứng sẽ được gọi dựa trên đối tượng thực tế.

Ví dụ sử dụng đa hình động:

Animal myAnimal = new Dog();
myAnimal.MakeSound(); // Output: Bark

IShape shape = new Rectangle();
shape.Draw(); // Output: Drawing Rectangle

Comments