Mengapa Multiple Inheritance Tidak Dibenarkan di Java dan C#
Adalah diketahui umum bahawa pelbagai warisan, keupayaan untuk kelas untuk mewarisi daripada berbilang kelas induk, tidak dibenarkan dalam Java atau C#. Walaupun banyak sumber hanya menyatakan fakta ini, mereka sering gagal menyelidiki sebab asas di sebalik keputusan reka bentuk ini.
Jawapan Ringkas:
Alasannya adalah kerana bahasa pereka bentuk memutuskan untuk tidak memasukkannya.
Penjelasan Lebih Panjang:
Pereka .NET dan Java berpendapat bahawa warisan berbilang menambahkan kerumitan yang ketara kepada bahasa mereka sambil menawarkan faedah yang minimum . Kerumitan melibatkan:
-
Penyelesaian Konflik: Pewarisan berbilang memperkenalkan isu cara menyelesaikan konflik apabila mewarisi kaedah atau sifat dengan nama yang sama daripada kelas induk yang berbeza.
-
Pengendalian Lebihan: Dalam sesetengah senario, pewarisan berbilang boleh membawa kepada ahli yang diwarisi pendua. Ini boleh menyebabkan kekaburan dan kekeliruan.
-
Overhed Pelaksanaan: Menambah berbilang warisan memperkenalkan kerumitan dalam bidang seperti pemutus, reka letak, penghantaran, akses medan, siri dan generik.
Temu bual dengan Pereka Bahasa:
Chris Brumme, yang bekerja pada CLR untuk .NET, menjelaskan keputusan itu dengan lebih lanjut:
- Bahasa yang berbeza mempunyai jangkaan yang berbeza-beza untuk MI, menjadikannya mencabar untuk melaksanakan penyelesaian universal.
- Aplikasi sebenar MI selalunya terhad, dan alternatif seperti pewarisan berbilang antara muka atau enkapsulasi selalunya mencukupi.
- Melaksanakan MI akan memerlukan perubahan ketara pada pelaksanaan bahasa, menjejaskan pelbagai bidang kefungsian.
Bagi Java, rasionalnya adalah serupa:
- Kesederhanaan, kebiasaan dan keinginan untuk mengelakkan C yang tidak perlu kerumitan adalah prinsip panduan dalam reka bentuk Java.
- Pereka percaya bahawa warisan berbilang akan menyebabkan lebih banyak pening kepala daripada yang dapat diselesaikan, berdasarkan pengalaman mereka dengan C .
Atas ialah kandungan terperinci Mengapa Java dan C# Memilih untuk Mengelakkan Pewarisan Berbilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!