Tại sao Đa kế thừa không thể thực hiện được trong C #?
Tại sao Đa kế thừa không thể thực hiện được trong C #?

Video: Tại sao Đa kế thừa không thể thực hiện được trong C #?

Video: Tại sao Đa kế thừa không thể thực hiện được trong C #?
Video: Java 41. Vì sao không có đa kế thừa trong Java? | Phần 2 - Lập trình Hướng Đối Tượng 2024, Có thể
Anonim

C # không không phải ủng hộ đa kế thừa , bởi vì họ lý luận rằng việc thêm đa kế thừa đã thêm quá nhiều phức tạp vào C # trong khi cung cấp quá ít lợi ích. Trong C #, các lớp chỉ cho phép đến thừa kế từ một lớp cha duy nhất, được gọi là một lớp di sản.

Chỉ vậy, tại sao đa kế thừa không được phép?

Java hỗ trợ đa kế thừa chỉ thông qua các giao diện. Một lớp có thể triển khai bất kỳ số lượng giao diện nào nhưng chỉ có thể mở rộng một lớp. Nhiều kế thừa không được hỗ trợ bởi vì nó dẫn đến vấn đề kim cương chết người. Giao diện là một hợp đồng của những thứ mà lớp của bạn phải thực hiện.

Người ta cũng có thể hỏi, chúng ta có thể kế thừa nhiều giao diện trong C # không? Giao diện giống như các thỏa thuận hoặc "hợp đồng" về những gì một lớp có thể làm được . Các lớp học có thể có nhiều giao diện , nhưng các lớp học không thể kế thừa nhiều các lớp học. Các lớp học kế thừa từ nhiều hơn một lớp học được gọi là nhiều - di sản . C # không không cho phép nhiều - di sản.

Ở đây, vấn đề Kim cương trong đa kế thừa C # là gì?

Các " vấn đề kim cương "là một sự mơ hồ nảy sinh khi hai lớp B và C thừa kế từ A và lớp D kế thừa từ cả B và C. Nếu có một phương thức trong A mà B và C đã ghi đè và D không ghi đè nó, thì lớp nào của phương thức đó sẽ D thừa kế : của B, hay của C?

Với ví dụ đa kế thừa trong C # là gì?

NS# không cho phép đa kế thừa với các lớp nhưng nó có thể được thực hiện bằng giao diện. Lý do đằng sau là: Nhiều thừa kế thêm quá nhiều phức tạp với ít lợi ích. Có rất nhiều khả năng xung đột thành viên lớp cơ sở. Di sản với Giao diện cung cấp cùng một công việc đa kế thừa.

Đề xuất: