Tại sao java không hỗ trợ đa kế thừa

1. Mlàm việc đầu mẩu chuyện.: Hey, hôm trước thấy ngươi nói đến 4 đặc điểm của lập trình sẵn hướng đối tượng giỏi vượt. Nay tao hỏi tính năng này được không?Tèo: Okay, mày hỏi đi nếu biết tao đã giải đáp không còn.: Cthị xã là crush tao nó bắt đầu học tập mang lại kế thừa trong Java. Thầy giáo hỏi:" Tại sao Java lại ko cung ứng đa kế thừa? quý khách hàng nào trả lời được thầy cùng điểm". Nó hỏi tao mà lại tao hoảng sợ vượt mày ạ. Mày trả lời góp tao gồm gì tao hậu tạ sau
*

Mọi đồ vật cho đến từ bây giờ vẫn ổn đúng không nhỉ làm sao, nhưng hãy tưởng tượng trường hợp bản thân mang lại tía lớp tin tặc, Gamer, Coder thuộc thừa kế xuất phát từ một lớp là Person nlỗi sau:

*

Bây giờ đồng hồ bản thân trả sử ví như là tin tặc đã ngủ ngày thức tối, Gamer đang thức một ngày dài còn Coder thức ngày ngủ đêm. Vậy thắc mắc vào một ngày thằng sinh viên It chỉ có thể hoặc là có tác dụng tin tặc hay những Gamer hay là Coder (vì nó còn yêu cầu đi học mà) thì nó vẫn ngủ như vậy nào? Câu này đã cạnh tranh còn nếu không biết hôm này được ngủ sáng sủa, nghỉ ngơi về tối xuất xắc ngủ cả ngày!Một ví dụ khác như vậy này:

public abstract class LiveAnimals abstract String livingPlace();public class Terrestrials extends LiveAnimals


Bạn đang xem: Tại sao java không hỗ trợ đa kế thừa

Override String livingPlace() return "On the ground"; public class Aquatics extends LiveAnimals
Override String livingPlace() return "Under the water"; public class Amphibilans extends Terrestrials, Aquatics //errorTrong ví dụ này bản thân gồm lớp LiveAnimals (động vật hoang dã sống) cùng hai lớp Terrestrials (động vật trên cạn), Aquatics (động vật hoang dã dưới nước) thừa kế trường đoản cú lớp LiveAnimails. Và bản thân tất cả lớp Amphibilans (lưỡng cư).Rõ ràng là Amphibilans bắt buộc kế thừa tự cả hai lớp Terrestrials, Aquatics do lưỡng cư có thể sinh sống cả bên trên cạn lẫn bên dưới nước. Nhưng ko, nếu như thừa kế như thế vẫn lỗi trong những lúc thực tiễn thì lại hoàn toàn có thể.Vậy Tóm lại là gì: Java không chất nhận được đa thừa kế chúng ta hiểu được java có phong cách thiết kế với nhiều đổi mới trong số đó sự đơn giản là một trong Một trong những điều quan trọng. Việc chất nhận được đa thừa kế vẫn đem lại những hệ quả, làm cho code trlàm việc yêu cầu mơ hồ.3. Vậy làm thế nào có được mục đích "đa kế thừa" trong java.Đơn giản thôi, chúng ta vẫn áp dụng interface. Một class không thể thừa kế từ rất nhiều class khác tuy vậy có thể implements nhiều interface khác biệt một dịp.Ta quay trở về cùng với ví dụ đầu tiên ta giải quyết và xử lý vấn đề bằng cách sử dụng các interface.Tạo cha interface như sau:public interface ICoder String sleep(String time); void code();public interface IGamer String sleep(String time); void playGame();public interface IHacker String sleep(String time); void hackFacebook();Lớp ItStudent đã implements cả ba interface đó:public class ItStudent implements IHacker, IGamer, ICoder
Override public void code()


Xem thêm: Tại Sao Captain Cầm Được Búa Của Thor, Búa Mjolnir

Override public void playGame()
Override public void hackFacebook()


Xem thêm: Làm Sao Để Học Giỏi Tiếng Anh Khi Bắt Đầu Của Bạn Bằng Không (Zero)?

Override public String sleep(String time) return time; Và Khi muốn ItStudent là hacker, coder giỏi gamer chúng ta chỉ cần làm như sau:public class Main public static void main(String<> args) IGamer người chơi = new ItStudent(); game thủ.playGame(); gamer.sleep("no sleep :)"); ICoder coder = new ItStudent(); coder.code(); coder.sleep("I work on morning & sleep in the evening"); Itin tặc hacker = new ItStudent(); hacker.hackFacebook(); hacker.sleep("I work on evening and sleep in the morning"); Tại phía trên ta thấy những interface ICoder, IHacker với IGamer đề gồm thông thường hàm String sleep(String time); nhưng lúc ItStudent implements bọn chúng thì chỉ bao gồm một hàm được thực thi. Đây chính là đặc điểm của interface, nó có công dụng chuyển đổi đổi khác hành động sinh hoạt runtime. Và cũng chính là nguyên do vì sao bọn họ dùng interface để dành được mục đích "nhiều kế thừa".4. Kết luậnVậy là qua nội dung bài viết này tôi đã cùng chúng ta vấn đáp câu hỏi: "Tại sao Java lại ko cung ứng đa kế thừa?" cùng làm ráng như thế nào nhằm vẫn đã đạt được mục đích đa kế thừa vào java y như Cpp hoặc Python thả.

Chuyên mục: Hỏi Đáp