Polimorfisme di Jawa: Konsep, Jenis, Karakteristik & Contoh

Diterbitkan: 2022-04-18

Javascript adalah salah satu bahasa Pemrograman Berorientasi Objek yang paling populer dan banyak digunakan, bersama dengan C#, PHP, Python, C++, dll. Javascript memungkinkan pengguna untuk menunjukkan dan menangani konsep kehidupan nyata melalui pemrograman karena semuanya direpresentasikan sebagai objek. Fitur Java sebagai bahasa pemrograman menawarkan beberapa cara untuk menyederhanakan pengembangan perangkat lunak dengan membuat kode lebih dinamis dan memudahkan pemeliharaan.

Pada artikel ini, kita akan menjelajahi Java sebagai bahasa Pemrograman Berorientasi Objek dan memahami konsep pewarisan, abstraksi, polimorfisme, dan enkapsulasi data. Kami juga akan melihat jenis polimorfisme di Jawa, kelebihan dan kekurangannya.

Daftar isi

Gambaran Umum Pemrograman Berorientasi Objek

Bahasa pemrograman berorientasi objek (OOP) mengacu pada bahasa komputer yang menggunakan konsep 'objek' waktu nyata dalam pengkodean. Ini bertujuan untuk mengimplementasikan entitas duniawi seperti pewarisan, polimorfisme, loop, abstraksi data, dll., Melalui pemrograman.

Ada beberapa konsep dasar Pemrograman Berorientasi Objek yang perlu dipahami oleh programmer. Istilah konseptual ini diperlukan untuk mempelajari tentang fitur khusus dan unik OOP seperti enkapsulasi, polimorfisme, dll.

1. Kelas

Sebuah 'kelas' mewakili satu set properti dan metode yang berlaku untuk semua 'objek' yang ditentukan di dalam kelas. Objek dapat dari tipe yang berbeda seperti integer, array atau string, dll. Kelas seperti prototipe yang didefinisikan oleh pengguna, dengan menggunakan 'objek' yang berbeda dapat dibuat.

2. Objek

Objek adalah unit paling mendasar dari bahasa OOP, yang mewakili data nyata dalam kehidupan nyata. Objek memiliki properti dari kelas tempat mereka dipanggil.

3. Metode

Metode adalah seperangkat pernyataan yang melibatkan fungsi yang berbeda yang disatukan untuk melakukan tugas tertentu. Ini mengembalikan output setelah menyelesaikan instruksi seperti yang didefinisikan oleh pengguna. Itu juga dapat melakukan tugas-tugas yang tidak menghasilkan keluaran. Metode memungkinkan pemrogram untuk menggunakan kembali kode tanpa mengetik ulang. Java membutuhkan semua metode untuk menjadi bagian dari kelas, tidak seperti bahasa seperti C++, C, atau Python.

Konsep OOP

Ada empat prinsip utama pemrograman Berorientasi Objek - Java menunjukkan semua properti ini:

1. Abstraksi

Abstraksi Data adalah properti bahasa OOP yang menampilkan detail yang diperlukan sambil menjaga detail objek lain yang tidak relevan agar tidak terlihat oleh pengguna, seperti kode implementasi. Hanya detail penting dan relevan yang ditampilkan oleh fitur ini, yang membantu pengembang dengan cepat membuat perubahan yang sesuai pada fungsionalitas kelas.

2. Enkapsulasi

Enkapsulasi data mengacu pada pembungkus data dalam unit. Properti bahasa OOP ini melindungi data yang dienkapsulasi dari fungsi dan metode lain. Ini mengikat kode dan metode tertentu untuk melakukan operasi dalam unit tunggal, sehingga mencegahnya dimanipulasi atau diakses oleh metode luar. Ini juga dikenal sebagai Penyembunyian Data.

3. Warisan

Warisan adalah fitur penting lain dari bahasa OOP yang memungkinkan kelas mewarisi properti dari kelas lain. Ini bekerja berdasarkan konsep penggunaan kembali kode, sehingga mengurangi kebutuhan untuk mengetik ulang fitur kelas berulang kali. Kelas yang mewarisi dari kelas lain dikenal sebagai subclass, dan kelas yang diwarisi dikenal sebagai superclass.

4. Polimorfisme

Polimorfisme memungkinkan suatu objek untuk mengambil banyak bentuk dan melakukan tugas serupa atau menunjukkan perilaku serupa dalam metode yang berbeda.

Polimorfisme di Jawa

Polimorfisme memungkinkan satu tugas dilakukan dengan berbagai cara. Ini adalah properti yang membantu mengidentifikasi dan membedakan antara entitas kode yang serupa, sehingga meningkatkan efisiensi bahasa OOP.

Di Jawa, polimorfisme ditunjukkan dengan mendeklarasikan objek sebagai entitas yang terpisah. Dengan cara ini, tindakan yang sama dapat dilakukan dengan berbagai cara. Polimorfisme diaktifkan bersama dengan pewarisan, memungkinkan objek untuk melakukan tugas yang berbeda menggunakan properti yang diwarisi dari kelas yang berbeda. Perbedaan penunjukan metode atau objek membedakan dua entitas.

Pelajari Kursus Pengembangan Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.

Karakteristik Polimorfisme

1. Paksaan

Konversi implisit tipe data untuk mencegah kesalahan tipe selama waktu kompilasi adalah paksaan. Ini tidak menyertakan konversi tipe data eksplisit tetapi hanya mengikuti hierarki konversi yang diizinkan Java. Misalnya, jika sebuah operan mengapung dan operatornya bilangan bulat, maka hasilnya akan mengapung.

2. Parameter/variabel polimorfik

Objek atau variabel yang dapat menyimpan nilai dari berbagai jenis selama waktu eksekusi dikenal sebagai variabel atau parameter polimorfik. Ini menentukan bahwa saat mendeklarasikan kelas, nama variabel yang sama dapat menyimpan tipe data yang berbeda, dan nama metode yang sama dapat menyimpan parameter dan tipe pengembalian yang berbeda.

3. Overload Operator Internal

Overloading operator menggunakan simbol operator sesuai kebutuhan pengguna. Java mendukung Overloading Operator Internal. Ini juga merupakan contoh polimorfisme statis.

Jenis Polimorfisme di Jawa

Di Jawa, polimorfisme dapat dipanggil menggunakan:

1. Metode Overloading

Metode overloading adalah proses membuat beberapa objek atau metode dengan nama yang sama dan milik kelas yang sama. Ini berfungsi di dalam kelas.

2. Metode Overriding

Metode overriding adalah bagaimana sebuah subclass membentuk metode yang sama seperti yang dideklarasikan di superclass. Ini berfungsi lintas kelas. Jika subclass berisi metode yang sama yang sudah ada di superclass, maka fungsi di subclass akan diganti.

Polimorfisme Subtipe di Jawa

Polimorfisme subtipe tergantung pada Upcasting dan Late Binding.

  • Upcasting adalah proses di mana suatu objek atau Metode dapat mempromosikan tipe data (float, integer, dll.) dari subtipe ke supertipe dengan memindahkannya ke hierarki pewarisan.
  • Pengikatan terlambat digunakan untuk memanggil metode yang merupakan instance non-final.

Tidak ada operator yang terlibat dalam hal ini karena subtipe itu sendiri adalah anggota dari supertipe. Misalnya, jika kelas diberi nama warna, subtipenya bisa merah, biru, oranye, hijau, dll. Polimorfisme subtipe menyertakan subtipe untuk menunjukkan sifat supertipe. Namun, akses ke properti individu dari setiap subtipe hilang.

Polimorfisme Runtime di Java

Di Jawa, polimorfisme runtime juga dikenal sebagai Dynamic Method Dispatch atau Dynamic Binding. Hal ini dicapai melalui Method overriding – memanggil metode override untuk memberikan penyelesaian secara dinamis saat runtime. Itu dapat dicapai melalui fungsi dan bukan objek.

Berikut adalah contoh polimorfisme runtime di Java:

kelas Mobil{

void run(){System.out.println("mengemudi");}

}

kelas Volkswagen memperluas Mobil{

void run(){System.out.println(“Mengemudi dengan aman sejauh 90km”);}

public static void main(String args[]){

Mobil c = Volkswagen baru();//upcasting

b.jalan();

}

}

keluaran :

Mengemudi dengan aman dengan 90km

Kompilasi Polimorfisme Waktu Di Jawa

Polimorfisme waktu kompilasi dicapai dengan metode overloading. Ini adalah proses di mana panggilan untuk metode kelebihan beban dilakukan dan diselesaikan selama waktu kompilasi. Ini juga dikenal sebagai polimorfisme statis. Java cukup fleksibel untuk memungkinkan pengguna menggunakan metode atau objek yang memiliki nama yang sama selama deklarasi dan properti tanda tangannya tetap berbeda.

Berikut adalah contoh polimorfisme waktu kompilasi di Java:

kelas SimpleCalc

{

int tambah(int x, int y)

{

kembali x+y;

}

int tambah(int x, int y, int z)

{

kembali x+y+z;

}

}

Demo kelas publik

{

public static void main(String args[])

{

SimpleCalc obj = SimpleCalc baru();

System.out.println(obj.add(20, 30));

System.out.println(obj.add(40, 30, 20));

}

}

keluaran :

50

90

Pentingnya Polimorfisme

Polimorfisme memungkinkan penulisan metode yang dapat membentuk berbagai jenis entitas dengan nama yang sama. Polimorfisme sangat penting di Java karena berbagai manfaat penggunaannya dan ruang lingkup yang disediakan untuk membuat kode dinamis:

  1. Ini memungkinkan penggunaan kembali kode – kode yang sama tidak perlu ditulis beberapa kali.
  2. Hal ini memungkinkan satu variabel untuk menunjukkan beberapa perilaku - memiliki nama yang sama tetapi properti yang berbeda dapat membuka ruang lingkup untuk menjaga konsistensi dalam kode.
  3. Pengurangan kode massal – membantu dalam debugging sekaligus memperpendek waktu kompilasi, menghemat memori, energi, dan waktu pengguna.

Kemungkinan Masalah dalam Menerapkan Polimorfisme

Polimorfisme dapat membingungkan untuk digunakan dan diimplementasikan. Ini mengurangi keterbacaan kode, sehingga menimbulkan ancaman banyak bug dan kesalahan. Ini juga menciptakan masalah dengan menjalankan fungsi sesuai kebutuhan.

Ada satu masalah klasik yang harus diwaspadai: Masalah Fragile Base Class. Ini mengacu pada perakitan dan pengkodean yang tidak tepat dari kelas yang diwarisi yang menghasilkan metode yang menunjukkan hasil yang tidak terduga.

Kesimpulan

Sifat warisan yang rapuh dapat menyebabkan kode disfungsional dan rusak meskipun semua kriteria lainnya tetap terpenuhi. Masalah arsitektur dasar ini dianggap sebagai masalah Fragile Base Class. Pelajari lebih lanjut tentang bagaimana Java menunjukkan konsep OOP dengan bergabung dengan Program PG Eksekutif upGrad dalam Pengembangan Perangkat Lunak – Spesialisasi dalam Pengembangan Full Stack . Dapatkan bimbingan dari pakar industri dan bangun pengetahuan praktis dengan terlibat dalam proyek kolaboratif langsung dengan rekan kerja.

Pesan kursi Anda hari ini!

Apa itu pengikatan statis dan dinamis?

Objek yang ditentukan pada saat kompilasi dikenal sebagai pengikatan statis. Di sisi lain, jenis objek pengikatan dinamis ditentukan pada saat run-time. Yang pertama digunakan selama metode overloading dan yang terakhir selama metode overriding.

Apa dua perbedaan mendasar antara metode overriding dan metode overloading?

Di Java, metode override tidak menimpa metode statis, pribadi dan final, sedangkan metode overloading tidak membebani metode statis, pribadi dan final di Jawa. Juga, mengganti metode subjek ke pengikatan dinamis dan, di sisi lain, metode kelebihan beban melewati pengikatan statis.

Apa perbedaan antara polimorfisme dan pewarisan di Jawa?

Di Jawa, ada beberapa poin perbedaan antara Polimorfisme dan Warisan:

1. Warisan adalah representasi dari hubungan orang tua-anak di dunia nyata dalam pengkodean. Tetapi polimorfisme adalah katalis yang menggunakan hubungan ini untuk membuat program lebih dinamis.
2. Warisan memungkinkan penggunaan kembali kode dari kelas anak dengan mewarisi yang sama dari kelas induk. Polimorfisme, sebaliknya, memungkinkan kelas anak untuk mendefinisikan kembali perilaku yang ada lagi di dalam kelas induk.