Kế thừa so với Container
Kế thừa và Container là hai khái niệm quan trọng được tìm thấy trong OOP (Ví dụ lập trình hướng đối tượng: C ++). Nói một cách đơn giản, cả Container và Kế thừa đều xử lý việc cung cấp các thuộc tính hoặc hành vi bổ sung cho một lớp. Kế thừa là khả năng cho một lớp kế thừa các thuộc tính và hành vi từ một lớp cha bằng cách mở rộng nó. Mặt khác, Container là khả năng của một lớp chứa các đối tượng của các lớp khác nhau làm dữ liệu thành viên.
Kế thừa là gì?
Như đã đề cập ở trên, Kế thừa là khả năng cho một lớp kế thừa các thuộc tính và hành vi từ một lớp cha bằng cách mở rộng nó. Kế thừa về cơ bản cung cấp việc tái sử dụng mã bằng cách cho phép mở rộng các thuộc tính và hành vi của một lớp hiện có bởi một lớp mới được định nghĩa. Nếu lớp A mở rộng B, thì lớp B được gọi là lớp cha (hoặc siêu lớp) và lớp A được gọi là lớp con (hoặc lớp dẫn xuất / lớp phụ). Trong kịch bản ví dụ này, lớp A sẽ kế thừa tất cả các thuộc tính và phương thức công khai và được bảo vệ của siêu lớp (B). Lớp con có thể tùy ý ghi đè (cung cấp chức năng mới hoặc mở rộng cho các phương thức) hành vi được kế thừa từ lớp cha. Kế thừa đại diện cho một mối quan hệ là một mối quan hệ trong OOP. Điều này về cơ bản có nghĩa là A cũng là một B. Nói cách khác, B có thể là lớp có mô tả chung về một thực thể trong thế giới thực nhất định nhưng A chỉ định một chuyên ngành nhất định. Trong một vấn đề lập trình trong thế giới thực, lớp Người có thể được mở rộng để tạo lớp Nhân viên. Điều này được gọi là chuyên môn hóa. Nhưng trước tiên bạn cũng có thể tạo lớp Nhân viên và sau đó khái quát hóa nó thành một lớp Người (nghĩa là khái quát hóa). Trong ví dụ này, Nhân viên sẽ có tất cả các thuộc tính và hành vi của Người (tức là Nhân viên cũng là Người) và cũng có thể chứa một số chức năng bổ sung (vì vậy, Người không phải là Nhân viên).
Container là gì?
Container là khả năng của một lớp chứa các đối tượng của các lớp khác nhau làm dữ liệu thành viên. Ví dụ, lớp A có thể chứa một đối tượng của lớp B là thành viên. Ở đây, tất cả các phương thức công khai (hoặc hàm) được định nghĩa trong B có thể được thực thi trong lớp A. Lớp A trở thành vùng chứa, trong khi lớp B trở thành lớp chứa. Container cũng được gọi là Thành phần. Trong ví dụ này, có thể nói rằng lớp A bao gồm lớp B. Trong OOP, Containerers đại diện cho một mối quan hệ đã có một mối quan hệ. Điều quan trọng cần lưu ý là, mặc dù container có quyền truy cập để thực thi tất cả các phương thức công khai của lớp được chứa, nó không thể thay đổi hoặc cung cấp chức năng bổ sung. Khi gặp vấn đề về lập trình trong thế giới thực, một đối tượng của lớp TextBox có thể được chứa trong Biểu mẫu lớp và do đó có thể nói rằng Biểu mẫu chứa TextBox (hoặc cách khác, Biểu mẫu được tạo thành từ TextBox).
Sự khác biệt giữa Kế thừa và Container
Mặc dù Kế thừa và Container là hai khái niệm OOP, nhưng chúng hoàn toàn khác nhau về những gì chúng cho phép lập trình viên đạt được. Kế thừa là khả năng cho một lớp kế thừa các thuộc tính và hành vi từ lớp cha bằng cách mở rộng nó, trong khi Container là khả năng của một lớp chứa các đối tượng của các lớp khác nhau làm dữ liệu thành viên. Nếu một lớp được mở rộng, nó kế thừa tất cả các thuộc tính / hành vi công khai và được bảo vệ và các hành vi đó có thể bị lớp con ghi đè. Nhưng nếu một lớp được chứa trong một lớp khác, container không có khả năng thay đổi hoặc thêm hành vi vào trong lớp. Kế thừa đại diện cho một mối quan hệ là một mối quan hệ trong OOP, trong khi Container chứa đại diện cho một mối quan hệ có một mối quan hệ.