Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Ví dụ C# về kế thừa phân cấp (Hierarchical Inheritance)

Kế thừa phân cấp (Hierarchical Inheritance): Nhiều lớp dẫn xuất (derived) kế thừa từ một lớp cơ sở (base) chung. Mỗi lớp con mở rộng chức năng theo hướng riêng.

Sơ đồ

       Father (Base)
      /    \
     /      \
  Son    Daughter
 (Derived) (Derived)

Mã nguồn


using System;

namespace Inheritance {
    class Test {
        static void Main(string[] args) {
            Father f = new Father();
            f.Display(); // Display...
            
            Son s = new Son();
            s.Display();      // Display... (từ Father)
            s.DisplayOne();   // Display One (của Son)
            
            Daughter d = new Daughter();
            d.Display();      // Display... (từ Father)
            d.DisplayTwo();   // Display Two (của Daughter)
            
            Console.ReadKey();
        }
    }
    
    // Base class
    class Father {
        public void Display() {
            Console.WriteLine("Display...");
        }
    }
    
    // Derived class 1
    class Son : Father {
        public void DisplayOne() {
            Console.WriteLine("Display One");
        }
    }
    
    // Derived class 2
    class Daughter : Father {
        public void DisplayTwo() {
            Console.WriteLine("Display Two");
        }
    }
}

Kết quả


Display...
Display...
Display One
Display...
Display Two

Đặc điểm

  • Son và Daughter đều kế thừa Display() từ Father.
  • Mỗi lớp con có phương thức riêng: DisplayOne(), DisplayTwo().
  • Không có quan hệ kế thừa giữa Son và Daughter (ngang hàng).

So sánh 3 loại kế thừa

LoạiCấu trúcVí dụ
SingleA → BAnimal → Dog
Multi-levelA → B → CGrandfather → Father → Son
HierarchicalA → B, A → CFather → Son, Father → Daughter

Lưu ý

  • C# không hỗ trợ multiple inheritance (một class kế thừa nhiều base class) — dùng Interface.
  • Kế thừa phân cấp phổ biến trong: UI controls (Control → Button, TextBox, Label), Entity framework (BaseEntity → User, Product, Order), Game (Entity → Player, Enemy, NPC).
  • Nguyên tắc Liskov Substitution: lớp con phải thay thế được lớp cha mà không làm hỏng chương trình.