2
Tại sao Java không hỗ trợ đa kế thừa trong lập trình hướng đối tượng?
0
Quốc Khánh120 đã đăng:

Khi sử dụng phương pháp lập trình hướng đối tượng, tại sao Java hay các ngôn ngữ lập trình bậc cao không hỗ trợ tính chất đa kế thừa nữa trong khi C/C++ vẫn còn hỗ trợ vậy?

thêm bình luận...
1
Quốc Khánh120 đã đăng:

Sau nhiều giờ đào bới và tìm hiểu, cuối cùng mình cũng hiểu ra, chia sẻ lại cho những bạn cần,

Sở dĩ Java và các ngôn ngữ lập trình bậc cao khác không hỗ trợ đa kế thừa là bởi vì:

Thứ nhất là về ý nghĩa triết lý khi các ngôn ngữ lập trình bậc cao được tạo ra là "càng đơn giản càng tốt":

  • Triết lý của ngôn ngữ Java:

    Đơn giản, hướng đối tượng, có thể phân tán, một cho tất cả (cùng một chương trình có thể thực thi cho mọi nền tảng), mạnh mẽ, an toàn, đa luồng, .... James Gosling

  • Triết lý của ngôn ngữ Python:

    • Đẹp thì tốt hơn xấu
    • Tuyệt đối thì tốt hơn tương đối
    • Đơn giản thì tốt hơn phức tạp
    • .....................................

Thứ hai là về việc sử dụng đa kế thừa tồn tại một vấn đề như sau:

Đa kế thừa trong Java

Hai lớp B và C cùng kế thừa từ một lớp cha là lớp A, giả sử B và C overriding phương thức của lớp A (overriding tức là B và C không những cùng kế thừa một phương thức nào đó từ lớp A mà còn sửa lại phương thức đã kế thừa đó tùy thuộc vào B hoặc C). Khi D tiếp tục kế thừa phương thức này từ B và C, D nên chọn phương thức của lớp B hay của phương thức của C để kế thừa ??? - Vấn đề này thuật ngữ tiếng Anh gọi là Diamond Problem.

Java không cho phép sử dụng đa kế thừa nhưng đổi lại Java cho phép sử dụng interfaces có chức năng tương tự như đa kế thừa.

đã bổ sung 5.9 năm trước bởi
thêm bình luận...
0
vuquanghuy0907150 đã đăng:

Mình không rành về CNTT lắm, nhưng vấn đề này thì mình có đọc qua ở đây. Mặc dù câu trả lời mình thấy có vẻ cũng không thỏa đáng lắm, nhưng thoi mình để đây hy vọng giúp ích cho bạn

https://javapapers.com/core-java/why-multiple-inheritance-is-not-supported-in-java/

1

Cảm ơn bạn vuquanghuy0907 đã gợi ý nhé, mình có viết một bài review lại bạn check lại xem có sai chỗ nào góp ý mình nha.

Quốc Khánh 19.04.2018
thêm bình luận...
Bạn đang thắc mắc? Ghi câu hỏi của bạn và đăng ở chế độ cộng đồng (?)