JavaRush /Java Blog /Random-ID /Rehat kopi #95. Bagaimana mengatasi masalah pewarisan ber...

Rehat kopi #95. Bagaimana mengatasi masalah pewarisan berganda di Java

Dipublikasikan di grup Random-ID
Sumber: FreeCodeCamp Java adalah salah satu bahasa pemrograman berorientasi objek yang paling populer digunakan saat ini. Karena ini adalah platform independen, Anda dapat menemukan aplikasi Java di setiap jenis perangkat dan sistem operasi apa pun. Dan karena Java relatif mudah dipelajari, Java menjadi salah satu bahasa yang dikuasai banyak programmer. Fitur penting Java yang harus Anda ketahui adalah pewarisan kelas. Warisan memungkinkan Anda mengoptimalkan kode, sehingga memudahkan penggunaan kembali kelas. Ketika Anda dapat menggunakan kembali kode yang telah diuji dan di-debug, siklus hidup pengembangan perangkat lunak menjadi lebih pendek dan lebih murah. Rehat kopi #95.  Cara mengatasi masalah pewarisan berganda di Java - 1Meskipun secara teori merupakan konsep yang sederhana, pengkodean hubungan pewarisan memerlukan perhatian terhadap detail. Terutama yang berkaitan dengan pewarisan berganda, di mana satu kelas anak mewarisi properti dari beberapa kelas induk. Java menolak hubungan pewarisan berganda karena menciptakan ambiguitas, namun ada beberapa cara untuk mencapai banyak efek yang sama jika Anda tahu apa yang harus dilakukan. Pada artikel ini, kita akan melihat masalah pewarisan berganda dan mendiskusikan opsi pengkodean alternatif di Java.

Terminologi warisan

Terkadang, untuk menjadi programmer yang sukses, Anda perlu menjadi pemecah masalah untuk menemukan solusi atas kesalahan atau masalah umum. Ini adalah bagian penting dari pengkodean yang aman dan cerdas. Salah satu masalah tersebut terkait dengan pewarisan berganda (atau lebih tepatnya, kekurangannya) di Java. Rehat kopi #95.  Cara mengatasi masalah pewarisan berganda di Java - 2Untuk memahami sepenuhnya pewarisan di Java, Anda harus memahami terminologi pewarisan dasar pemrograman berorientasi objek (OOP).
  • Kelas adalah struktur pola dasar dalam bahasa pemrograman berorientasi objek. Sebuah kelas mendefinisikan properti umum untuk sekelompok objek.
  • Kelas induk : Juga dikenal sebagai kelas dasar atau kelas super. Kelas induk adalah kelas yang dapat diperluas yang menyediakan fungsionalitas ke kelas anak. Ini memungkinkan untuk digunakan kembali. Definisi dan fungsi kelas induk digunakan kembali saat membuat kelas anak.
  • Kelas anak : Lebih umum disebut subkelas, kelas anak mewarisi fungsionalitas dari kelas lain. Kelas anak adalah kelas lanjutan atau kelas turunan.
  • Warisan : Hubungan antara kelas induk dan anak.

Jenis warisan OOP

Ada banyak bahasa pemrograman berorientasi objek populer yang digunakan saat ini, termasuk Java, C++, JavaScript, Python, PHP, Ruby, dan Perl. Meskipun pewarisan adalah konsep umum di antara bahasa-bahasa OOP ini, tidak semua jenis pewarisan ada di masing-masing bahasa tersebut. Sangatlah penting untuk mengetahui jenis warisan yang umum dan batasan warisan dalam bahasa tertentu yang Anda gunakan. Semakin banyak Anda mengetahui tentang warisan, Anda akan menjadi pengembang yang lebih efektif. Jenis warisan yang didukung oleh Java meliputi:
  • Warisan tingkat tunggal : Ketika kelas anak mewarisi fitur dari kelas induk tunggal.
  • Warisan multi-level : Ini adalah bentuk pewarisan multi-level satu tingkat. Dalam warisan multi-level, kelas anak juga dapat bertindak sebagai kelas induk untuk kelas anak lainnya. Hubungan antara setiap level adalah linier - tidak ada cabang yang lebih tinggi dibandingkan dengan pewarisan berganda. Dalam hal ini, kelas anak terakhir memiliki fungsi dari semua level di atasnya.
  • Warisan hierarki : Kebalikan dari pewarisan berganda. Dalam pewarisan hierarki, kelas induk tunggal memiliki lebih dari satu kelas anak. Jadi, alih-alih memiliki cabang di atasnya, ia malah bercabang di bawah.
  • Pewarisan Hibrid : Seperti namanya, pewarisan hibrid merupakan kombinasi dari jenis pewarisan lainnya.
Selain tipe pewarisan yang tercantum di atas, ada tipe lain yang tidak didukung Java.
  • Warisan berganda : Dalam pewarisan berganda, kelas anak memiliki lebih dari satu kelas induk. Meskipun Java dan JavaScript tidak mendukung pewarisan berganda, bahasa OOP seperti C++ mendukungnya.
  • Warisan multi-jalur : Hibrida warisan berganda, multi-level, dan hierarkis, dalam pewarisan multi-jalur, kelas anak mewarisi karakteristik dan fungsinya dari kelas induk dan beberapa kelas anak dari kelas induk. Karena pewarisan multipath didasarkan pada pewarisan berganda, Java tidak mendukung penggunaannya.

Mengapa Java tidak mendukung pewarisan berganda

Masalah utama dengan pewarisan berganda adalah hal ini dapat menciptakan ambiguitas di kelas anak. Dalam buku putih tahun 1995, pimpinan desainer Java James Gosling menyatakan bahwa masalah pewarisan berganda adalah salah satu alasan diciptakannya Java. Kompleksitas yang melekat pada pewarisan berganda paling jelas terlihat dalam masalah berlian. Dalam soal berlian, kelas induk A memiliki dua kelas anak B dan C yang berbeda; yaitu, kelas anak B dan C memperluas kelas A. Rehat kopi #95.  Cara mengatasi masalah pewarisan berganda di Java - 3Sekarang kita membuat kelas anak baru D yang memperluas kelas B dan kelas C. Perhatikan bahwa kita memiliki pewarisan berganda (D memperluas B dan C), pewarisan hierarki ( B dan C memperluas A) dan pewarisan bertingkat (D meluas A, B dan C). Dalam masalah berlian, kelas turunan B dan C mewarisi metode dari kelas induk A. Baik B maupun C mengesampingkan metode yang diwarisi. Namun metode baru di B dan C saling bertentangan. Kelas D anak terakhir mewarisi dua metode independen dan bertentangan dari banyak orang tuanya B dan C. Tidak jelas metode kelas D mana yang harus digunakan, sehingga timbul ambiguitas. Bahasa pemrograman OOP lainnya menerapkan metode berbeda untuk menyelesaikan ambiguitas pewarisan berganda.

Bagaimana mengatasi masalah pewarisan berganda di Java

Hanya karena pewarisan berganda bermasalah bukan berarti tidak ada gunanya. Ada banyak situasi di mana Anda mungkin ingin satu kelas memiliki fungsi dari beberapa kelas lainnya. Bayangkan saja Tesla Roadster yang akan Anda beli ketika Anda menjadi pengembang perangkat lunak yang sangat sukses. Karakteristik teknisnya didasarkan pada kelas mobil sport dan kelas kendaraan listrik. Contoh lain: browser yang Anda gunakan untuk membaca artikel ini. Ini memiliki fitur dari kelas solusi privasi Internet dan dari kelas browser Internet umum. Namun Anda tidak dapat memperluas beberapa kelas di Java. Jadi bagaimana bahasa ini mengatasi masalah pewarisan berganda? Java menggunakan struktur yang disebut antarmuka. Antarmuka adalah tipe abstrak yang mendefinisikan perilaku yang akan diterapkan oleh kelas. Karena bersifat abstrak, antarmuka tidak berisi instruksi rinci tentang perilakunya. Sebaliknya, kelas menyediakan implementasi konkret dari perilaku antarmuka. Antarmuka memiliki beberapa karakteristik yang menentukan:
  • Tidak seperti kelas, Anda tidak membuat instance antarmuka. Sebaliknya, kelas mengimplementasikan antarmuka.
  • Antarmuka hanya berisi definisi konstanta publik dan header metode.
  • Antarmuka hanya dapat memperluas antarmuka lain, bukan kelas.
  • Antarmuka dapat memperluas banyak antarmuka, dan kelas dapat mengimplementasikan banyak antarmuka.
Kami sekarang dapat mengatasi masalah berlian secara efektif menggunakan antarmuka. Mengingat bahwa hanya antarmuka yang hanya dapat memperluas antarmuka lain, dan kelas apa pun yang memerlukan beberapa karakteristik pewarisan harus mengimplementasikan banyak antarmuka, kita dapat mengganti kelas masalah berlian. Apa yang dulunya merupakan kelas A, B, dan C sekarang menjadi antarmuka A, B, dan C. Antarmuka B dan C masih memperluas antarmuka A, namun tidak satu pun dari antarmuka ini yang memiliki fungsi spesifik, hanya perilaku spesifik. Kelas D tetap menjadi kelas yang bertanggung jawab untuk secara khusus mengimplementasikan perilaku yang ditemukan di antarmuka B dan C. Perhatikan satu perbedaan utama: kelas D tidak memperluas antarmuka B dan C. Sebaliknya, kelas D mengimplementasikannya. Dengan cara ini Anda sebenarnya tidak memiliki banyak warisan. Sebaliknya, Anda hanya menyusun ulang masalahnya.

Kesimpulan

Memahami warisan sangat penting bagi setiap pengembang Java yang efektif. Penting juga untuk mengetahui batasan pewarisan dan solusi bawaan Java untuk masalah pewarisan berganda tradisional. Mempelajari cara membuat antarmuka untuk menciptakan kembali efek pewarisan berganda di Java akan meningkatkan produktivitas dan peluang perekrutan Anda.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION