Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> java

Polimorfisme di Java: Panduan Lengkap dengan Contoh Praktis

Apa Itu Polimorfisme di Java?

Polimorfisme adalah konsep inti dalam Pemrograman Berorientasi Objek (OOP) Java. Ini timbul ketika kelas terhubung melalui warisan, memungkinkan satu antarmuka untuk mewakili berbagai bentuk yang berbeda. Hasilnya, pemanggilan metode dapat memanggil implementasi yang berbeda tergantung pada tipe objek sebenarnya pada waktu proses.

Bayangkan ponsel pintar yang dapat berkomunikasi melalui panggilan suara, teks, gambar, atau email. Tujuannya—komunikasi—sama, tetapi setiap mode berperilaku berbeda. Itulah polimorfisme dalam istilah sehari-hari.

Apa yang Akan Anda Pelajari

Contoh Polimorfisme Java dalam OOP

Pertimbangkan kelas dasar Account yang menawarkan deposit() dan withdraw(). Dua subclass, SavingsAccount dan CheckingAccount, mewarisi metode ini tanpa perubahan karena operasi identik.

Polimorfisme di Java: Panduan Lengkap dengan Contoh Praktis

Mengadaptasi Persyaratan yang Berubah

Saat fitur baru—seperti fasilitas overdraft—diperlukan, subclass PrivilegedAccount dapat mengganti withdraw() untuk memberikan logika baru tanpa menyentuh subclass yang ada. Ini menunjukkan keuntungan pemeliharaan polimorfisme.

Polimorfisme di Java: Panduan Lengkap dengan Contoh Praktis

Metode Overriding di Java

Overriding terjadi ketika subclass menyediakan implementasinya sendiri dari metode yang sudah didefinisikan di superclass-nya. Tanda tangan metode (nama, parameter, tipe kembalian) harus cocok persis.

Aturan Utama

Contoh:

class Doctor { public void treatPatient() { // logika pengobatan umum } } class Surgeon extends Doctor { @Override public void treatPatient() { // pengobatan bedah spesialis } } public class Run { public static void main(String[] args) { Doctor doctor = new Doctor(); doctor.treatPatient(); // mengeksekusi Doctor.treatPatient() Surgeon surgeon = new Surgeon(); surgeon.treatPatient(); // mengeksekusi Surgeon.treatPatient() } }

Overloading vs. Overriding

Metode OverloadingMetode Overriding
Kelas yang sama, nama yang sama, daftar parameter berbeda. Metode superclass didefinisikan ulang di subclass dengan tanda tangan identik.
Contoh:
void sum(int a, int b);
void sum(int a, int b, int c);
void sum(float a, double b);
Contoh:
class X { int sum() { ... } } class Y extends X { @Override int sum() { ... } }

Polimorfisme Dinamis (Run-Time)

Saat referensi superclass menunjuk ke objek subclass, JVM menyelesaikan pemanggilan metode pada waktu proses. Ini adalah polimorfisme sejati dalam aksi.

Doctor doc = new Surgeon(); doc.treatPatient(); // Mengeksekusi Surgeon.treatPatient()

Metode yang sebenarnya dipanggil tergantung pada tipe objek pada waktu proses, bukan tipe referensi.

Polimorfisme Statis vs. Dinamis

Polimorfisme statis (overloading) diselesaikan pada waktu kompilasi, sementara polimorfisme dinamis (overriding) diselesaikan pada waktu proses.

Polimorfisme StatisPolimorfisme Dinamis
Metode overloading; binding waktu kompilasi. Metode overriding; binding waktu proses.
Contoh:
void sum(int a, int b);
void sum(float a, double b);
Contoh:
Doctor d = new Surgeon();
d.treatPatient();

Menggunakan Kata Kunci super

Saat subclass perlu memperluas metode superclass, super memanggil implementasi induk sebelum menambahkan logika sendiri.

class Surgeon extends Doctor { @Override public void treatPatient() { super.treatPatient(); // logika dasar // logika spesialis bedah } }

Demikian pula, super dapat mengakses bidang protected atau public dari superclass.

Contoh Praktis: Warisan, Polimorfisme, & Super

Salin kode di bawah ini ke IDE Anda dan amati keluaran.

public class Test { public static void main(String[] args) { X x = new X(); Y y = new Y(); y.m2(); // Buat komentar untuk melihat efek warisan // x.m1(); // y.m1(); // x = y; // referensi induk ke objek anak // x.m1(); // y.a = 10; // error: a adalah private } } class X { private int a; int b; public void m1() { System.out.println("Ini adalah metode m1 dari kelas X"); } } class Y extends X { int c; @Override public void m1() { System.out.println("Ini adalah metode m1 dari kelas Y"); } public void m2() { super.m1(); System.out.println("Ini adalah metode m2 dari kelas Y"); } }

Poin Utama

java

  1. Menguasai Polimorfisme Java: Konsep, Contoh, dan Praktik Terbaik
  2. Kelas Abstrak C#: Tutorial Praktis dengan Contoh Kode
  3. Memahami Antarmuka C#: Definisi, Contoh, dan Penggunaan Praktis
  4. Metode Java String length(): Cara Mendapatkan Ukuran String (Contoh)
  5. Memahami Java String.charAt(): Sintaks, Tipe Kembali, Pengecualian, dan Contoh Praktis
  6. Metode Java String.contains(): Cara Memeriksa Substring – Contoh Praktis
  7. Menguasai Java String.endsWith(): Cara Memeriksa Akhir String dengan Contoh
  8. Java Static Dijelaskan: Variabel, Metode, dan Blok dengan Contoh Praktis
  9. Antarmuka vs Kelas Abstrakt di Java: Cara Memilih Abstraksi yang Tepat
  10. Membaca File di Java dengan BufferedReader – Panduan Praktis dengan Contoh