Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa đơn thừa kế và đa kế thừa

Kế thừa hỗ trợ mạnh mẽ cho khái niệm tái sử dụng tức là lớp mới được tạo lại sử dụng lại các thuộc tính của những cái đã tồn tại. Trình xác định truy cập quyết định cách thức mà thành viên lớp cơ sở sẽ được kế thừa bởi lớp dẫn xuất. Có nhiều cách để đạt được sự kế thừa đơn, nhiều, Phân cấp, Đa cấp, Lai. Trong khi chủ đề thảo luận chính của chúng tôi là sự khác biệt giữa thừa kế đơn và đa. Trong thừa kế đơn lẻ, chúng ta chỉ có một lớp cơ sở được kế thừa bởi chỉ một lớp dẫn xuất. Trong nhiều kế thừa, chúng ta có nhiều hơn hai lớp cơ sở được kế thừa hoàn toàn chỉ bởi một lớp dẫn xuất.


Biểu đồ so sánh

Cơ sở để so sánhKế thừa đơnĐa kế thừa
Căn bảnLớp phái sinh kế thừa một lớp cơ sở duy nhất.Lớp phái sinh kế thừa hai hoặc nhiều hơn hai lớp cơ sở.
Thực hiệnLớp origin_group: lớp cơ sở access_specifierLớp dẫn xuất _ class: access_specifier base_group1, access_specifier base_group2, ....
Truy cập
Lớp dẫn xuất truy cập các tính năng của lớp cơ sở duy nhấtLớp dẫn xuất truy cập các tính năng kết hợp của các lớp cơ sở được kế thừa
Tầm nhìnCông cộng, tư nhân, được bảo vệCông cộng, tư nhân, được bảo vệ
Thời gian chạyYêu cầu số lượng nhỏ thời gian chạy qua đầuYêu cầu thêm thời gian chạy so với kế thừa đơn

Định nghĩa kế thừa đơn

Trong kế thừa đơn, có một lớp cơ sở duy nhất và một lớp dẫn xuất duy nhất. Lớp phái sinh kế thừa lớp cơ sở hoặc công khai, bảo vệ và riêng tư. Các thành viên của lớp cơ sở có thể được truy cập bởi lớp dẫn xuất theo chỉ định truy cập được chỉ định trong khi kế thừa lớp cơ sở.

Chúng ta hãy có một ví dụ thực tế, chúng ta có hai lớp, một lớp tài khoản và một lớp tài khoản tiết kiệm, Ở đây, lớp tài khoản tiết kiệm, có thể kế thừa tính năng của lớp tài khoản, do đó, lớp tài khoản của lớp Cameron sẽ trở thành lớp cơ sở / siêu / lớp phụ để lưu lớp tài khoản và lớp tài khoản tiết kiệm của bạn sẽ là lớp dẫn xuất.

Ở đây, các thuộc tính của lớp tài khoản có tên là acc_no (riêng tư) và số dư (công khai) và các hàm thành viên được khởi tạo (), get_accno () là công khai. Bây giờ, lớp tài khoản của Cameron được nhận thừa kế vào lớp tài khoản tiết kiệm của Google, vì vậy, tất cả thành viên công khai của lớp tài khoản có thể được truy cập trực tiếp bởi lớp tài khoản tiết kiệm của bạn. Nó có thể truy cập vào thành viên riêng của lớp tài khoản của người dùng thông qua các chức năng thành viên công cộng của lớp tài khoản của Google nhưng không thể truy cập trực tiếp vào họ.

Thực hiện kế thừa đơn:

 # bao gồm sử dụng không gian tên std; Tài khoản lớp {int acc_no, ; công: cân bằng phao; void khởi tạo (int x, int y) {acc_no = x; số dư = y; } int get_accno. () {return acc_no; }}; lớp Saving_acc: Tài khoản công cộng {float intrest_rate; công khai: // hàm tạo của lớp Saving_acc Saving_acc (int c) {Interest_rate = c; } void display () {cout < 

Định nghĩa đa kế thừa

Nhiều kế thừa cho phép lớp dẫn xuất kế thừa các tính năng kết hợp của nhiều hơn một lớp cơ sở, tức là chúng ta có lớp dẫn xuất đơn và nhiều lớp cơ sở. Mỗi lớp cơ sở phải được kế thừa bằng cách đề cập đến trình xác định truy cập riêng cho từng lớp. Một lớp dẫn xuất có thể truy cập các thành viên của các lớp cơ sở dựa trên bộ xác định truy cập mà lớp cơ sở được kế thừa.

Hãy làm cho nó dễ dàng hơn với ví dụ chúng ta có ba lớp là Xe đạp, Xe hơi và Xe cộ. Giờ đây, các loại xe cộ có thể kế thừa các tính năng của dòng xe đạp Bike cũng như của dòng xe Car. Vì vậy, những chiếc xe Xe cộ trở thành lớp có nguồn gốc và những chiếc xe đạp cao cấp và chiếc xe đạp trở thành lớp cơ sở. Giờ đây, có thể truy cập công khai, có thể truy cập công khai bởi trực tuyến, vì nó có thể truy cập tất cả các thành viên công cộng của Xe đạp và truy cập bằng xe cộ.

Thực hiện nhiều kế thừa:

 # bao gồm sử dụng không gian tên std; lớp Xe đạp {int engine_cost; ; công khai: void set_engine_cost (int x) {engine_cost = x; }}; lớp Xe {bảo vệ: int Model_no; công khai: void set_Model_no (int p) {Model_no = p; }}; class Vehical: xe đạp công cộng, xe công cộng {int no_of_wheels công khai: violical (int w) {no_of_wheels = w; cout << "không có bánh xe" < 

Sự khác biệt chính giữa kế thừa đơn và đa

  1. Kế thừa đơn là một lớp dẫn xuất có một lớp cơ sở duy nhất trong khi, trong nhiều thừa kế, có hai hoặc nhiều hơn hai lớp cơ sở, nhưng lớp dẫn xuất đơn.
  2. Nhiều kế thừa khá khó hiểu vì ở đây một lớp dẫn xuất duy nhất thừa hưởng hai hoặc nhiều lớp cơ sở. Nếu các lớp cơ sở có một thuộc tính hoặc hàm có cùng tên thì đối với lớp dẫn xuất, việc xác định thuộc tính hoặc hàm của lớp cơ sở đó là gì, nó trở nên khó khăn.
  3. Các vấn đề trên không ít hơn trong trường hợp thừa kế đơn lẻ. Nhưng trong trường hợp thừa kế nhiều lần, việc xây dựng hoặc phá hủy đối tượng sẽ gọi các hàm tạo và hàm hủy của lớp cha trong hệ thống phân cấp lớp làm tăng chi phí.
  4. Kế thừa duy nhất là hướng tới chuyên môn hóa. Trong khi đó nhiều kế thừa là hướng tới khái quát hơn.
  5. Vì thừa kế đơn lẻ có ít chi phí hơn nên nó có ít thời gian chạy hơn so với nhiều kế thừa.

Phần kết luận

Kế thừa làm cho công việc của lập trình viên dễ dàng như thể một lớp đã được hình thành, các tính năng của nó có thể được điều chỉnh bởi người khác nếu được yêu cầu. Mặc dù bộ xác định truy cập giới hạn quyền truy cập vào các thành viên của lớp cơ sở theo một cách nhất định, nhưng nó làm cho dữ liệu an toàn hơn. Kế thừa đơn lẻ bằng cách nào đó đơn giản và dễ thực hiện hơn so với nhiều kế thừa. Kế thừa làm giảm kích thước của mã đối tượng, nhưng cũng ảnh hưởng đến thời gian chạy của chương trình.

Top