JavaRush /Blog Java /Random-MS /Coffee break #95. Bagaimana untuk menyelesaikan masalah w...

Coffee break #95. Bagaimana untuk menyelesaikan masalah warisan berbilang di Jawa

Diterbitkan dalam kumpulan
Sumber: FreeCodeCamp Java ialah salah satu bahasa pengaturcaraan berorientasikan objek yang paling popular digunakan hari ini. Memandangkan ia adalah platform bebas, anda boleh menemui aplikasi Java pada setiap jenis peranti dan setiap sistem pengendalian. Dan kerana Java agak mudah dipelajari, ia adalah salah satu bahasa yang dikuasai ramai pengaturcara. Ciri penting Java yang perlu anda ketahui ialah warisan kelas. Warisan membolehkan anda mengoptimumkan kod anda, menjadikannya lebih mudah untuk menggunakan semula kelas. Apabila anda boleh menggunakan semula kod yang telah diuji dan dinyahpepijat, kitaran hayat pembangunan perisian menjadi lebih pendek dan lebih murah. Coffee break #95.  Bagaimana untuk menyelesaikan masalah warisan berbilang di Jawa - 1Walaupun konsep mudah dalam teori, hubungan pewarisan pengekodan memerlukan perhatian terhadap perincian. Terutamanya berkenaan dengan berbilang warisan, di mana satu kelas anak mewarisi sifat daripada berbilang kelas induk. Java menolak berbilang perhubungan warisan kerana ia mewujudkan kesamaran, tetapi terdapat beberapa cara untuk mencapai banyak kesan yang sama jika anda tahu perkara yang perlu dilakukan. Dalam artikel ini, kita akan melihat isu dengan berbilang warisan dan membincangkan pilihan pengekodan alternatif dalam Java.

Istilah pewarisan

Kadangkala, untuk menjadi seorang pengaturcara yang berjaya, anda perlu menjadi penyelesai masalah untuk mencari penyelesaian untuk ralat atau masalah biasa. Ini adalah bahagian penting dalam pengekodan yang selamat dan pintar. Satu masalah sedemikian adalah berkaitan dengan warisan berbilang (atau lebih tepatnya, kekurangannya) di Jawa. Coffee break #95.  Bagaimana untuk menyelesaikan masalah warisan berbilang di Jawa - 2Untuk memahami sepenuhnya warisan dalam Java, anda perlu biasa dengan terminologi pewarisan asas pengaturcaraan berorientasikan objek (OOP).
  • Kelas ialah struktur corak asas dalam bahasa pengaturcaraan berorientasikan objek. Kelas mentakrifkan sifat sepunya untuk sekumpulan objek.
  • Kelas induk : Juga dikenali sebagai kelas asas atau kelas super. Kelas induk ialah kelas yang boleh diperluaskan yang menyediakan kefungsian kepada kelas anak. Ia membenarkan penggunaan semula. Takrif dan fungsi kelas induk digunakan semula semasa membuat kelas anak.
  • Kelas kanak-kanak : Secara umum dipanggil subkelas, kelas kanak-kanak mewarisi fungsi daripada kelas lain. Kelas kanak-kanak ialah kelas lanjutan atau turunan.
  • Warisan : Hubungan antara kelas ibu bapa dan anak.

Jenis warisan OOP

Terdapat banyak bahasa pengaturcaraan berorientasikan objek popular yang digunakan hari ini, termasuk Java, C++, JavaScript, Python, PHP, Ruby, dan Perl. Walaupun pewarisan adalah konsep biasa dalam kalangan bahasa OOP ini, tidak semua jenis pewarisan wujud dalam setiap bahasa ini. Adalah amat penting untuk mengetahui jenis warisan biasa dan sekatan ke atas warisan dalam bahasa tertentu yang anda gunakan. Semakin banyak anda mengetahui tentang warisan, semakin berkesan pembangun anda. Jenis warisan yang disokong oleh Java termasuk:
  • Warisan peringkat tunggal : Apabila kelas anak mewarisi ciri daripada kelas induk tunggal.
  • Warisan berbilang peringkat : Ini ialah bentuk berbilang peringkat bagi warisan satu peringkat. Dalam warisan berbilang peringkat, kelas anak juga boleh bertindak sebagai kelas induk untuk kelas anak lain. Hubungan antara setiap peringkat adalah linear - tiada cawangan yang lebih tinggi daripada dengan warisan berbilang. Dalam kes ini, kelas anak akhir mempunyai fungsi dari semua peringkat di atas.
  • Warisan hierarki : Bertentangan dengan warisan berbilang. Dalam warisan hierarki, kelas induk tunggal mempunyai lebih daripada satu kelas anak. Jadi daripada mempunyai cawangan di atasnya, ia bercabang di bawah.
  • Warisan Hibrid : Seperti namanya, warisan hibrid ialah gabungan jenis warisan lain.
Selain jenis warisan yang disenaraikan di atas, terdapat jenis lain yang tidak disokong oleh Java.
  • Warisan berbilang : Dalam warisan berbilang, kelas anak mempunyai lebih daripada satu kelas induk. Walaupun Java dan JavaScript tidak menyokong pelbagai warisan, bahasa OOP seperti C++ menyokongnya.
  • Warisan berbilang laluan : Hibrid warisan berbilang, berbilang peringkat dan hierarki, dalam warisan berbilang laluan, kelas anak mewarisi ciri dan fungsinya daripada kelas induk dan beberapa kelas anak kelas induk. Memandangkan warisan berbilang laluan adalah berdasarkan warisan berbilang, Java tidak menyokong penggunaannya.

Mengapa Java tidak menyokong berbilang warisan

Masalah utama dengan warisan berbilang ialah ia boleh mewujudkan kekaburan dalam kelas kanak-kanak. Dalam kertas putih 1995, pereka utama Java James Gosling menyatakan bahawa masalah dengan pelbagai warisan adalah salah satu sebab Java dicipta. Kerumitan yang wujud dalam pelbagai warisan paling jelas dilihat dalam masalah berlian. Dalam masalah berlian, kelas induk A mempunyai dua kelas anak B dan C yang berbeza; iaitu, kelas kanak-kanak B dan C melanjutkan kelas A. Coffee break #95.  Bagaimana untuk menyelesaikan masalah warisan berbilang di Jawa - 3Sekarang kita mencipta kelas anak baharu D yang memanjangkan kedua-dua kelas B dan kelas C. Perhatikan bahawa kita mempunyai warisan berbilang (D melanjutkan B dan C), warisan hierarki ( B dan C melanjutkan A) dan warisan berbilang peringkat (D memanjangkan A, B dan C). Dalam masalah berlian, kelas anak B dan C mewarisi kaedah daripada kelas induk A. Kedua-dua B dan C mengatasi kaedah yang diwarisi. Tetapi kaedah baru dalam B dan C bercanggah antara satu sama lain. Kelas anak akhir D mewarisi dua kaedah bebas dan bercanggah daripada ibu bapa berbilang B dan C. Tidak jelas kaedah kelas D mana yang harus digunakan, jadi timbul kekaburan. Bahasa pengaturcaraan OOP lain melaksanakan kaedah yang berbeza untuk menyelesaikan kekaburan pelbagai warisan.

Bagaimana untuk menyelesaikan masalah warisan berbilang di Jawa

Hanya kerana berbilang warisan bermasalah tidak bermakna ia tidak berguna. Terdapat banyak situasi di mana anda mungkin mahu satu kelas mempunyai fungsi daripada beberapa kelas lain. Fikirkan sahaja tentang Tesla Roadster yang akan anda beli apabila anda menjadi pembangun perisian yang sangat berjaya. Ciri teknikalnya adalah berdasarkan kedua-dua kelas kereta sukan dan kelas kenderaan elektrik. Contoh lain: penyemak imbas yang anda gunakan untuk membaca artikel ini. Ia mempunyai ciri daripada kelas penyelesaian privasi Internet dan daripada kelas pelayar Internet umum. Tetapi anda tidak boleh melanjutkan beberapa kelas di Java. Jadi bagaimana bahasa ini menangani masalah warisan berbilang? Java menggunakan struktur yang dipanggil antara muka. Antara muka ialah jenis abstrak yang menentukan tingkah laku untuk dilaksanakan oleh kelas. Kerana ia adalah abstrak, antara muka tidak mengandungi arahan terperinci tentang tingkah laku mereka. Sebaliknya, kelas menyediakan pelaksanaan konkrit tingkah laku antara muka. Antara muka mempunyai beberapa ciri yang menentukan:
  • Tidak seperti kelas, anda tidak membuat antara muka seketika. Sebaliknya, kelas melaksanakan antara muka.
  • Antara muka hanya mengandungi definisi malar awam dan pengepala kaedah.
  • Antara muka hanya boleh memanjangkan antara muka lain, bukan kelas.
  • Antara muka boleh memanjangkan berbilang antara muka, dan kelas boleh melaksanakan berbilang antara muka.
Kami kini boleh menyelesaikan masalah berlian dengan berkesan menggunakan antara muka. Mengingati bahawa hanya antara muka boleh memanjangkan antara muka lain sahaja, dan mana-mana kelas yang memerlukan ciri warisan berbilang mesti melaksanakan berbilang antara muka, kita boleh mengatasi kelas masalah berlian. Kelas A, B dan C yang dahulunya menjadi antara muka A, B dan C. Antara muka B dan C masih memanjangkan antara muka A, tetapi tiada antara muka ini mempunyai fungsi khusus, hanya tingkah laku tertentu. Kelas D kekal sebagai kelas yang bertanggungjawab untuk melaksanakan secara khusus tingkah laku yang terdapat dalam antara muka B dan C. Perhatikan satu perbezaan utama: kelas D tidak memanjangkan antara muka B dan C. Sebaliknya, ia melaksanakannya. Dengan cara ini anda sebenarnya tidak mempunyai banyak warisan. Sebaliknya, anda hanya merangka semula masalah itu.

Kesimpulan

Memahami warisan adalah penting untuk mana-mana pembangun Java yang berkesan. Ia juga sama pentingnya untuk mengetahui batasan warisan dan penyelesaian terbina dalam Java untuk masalah warisan berbilang tradisional. Mempelajari cara mencipta antara muka untuk mencipta semula kesan warisan berbilang dalam Java akan meningkatkan produktiviti dan peluang pengambilan pekerja anda.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION