Perilaku Polimorfik
Gunakan polimorfisme untuk mencetak, mengurutkan, dan mengagregasi bentuk campuran. Buat algoritme tetap kecil dan mudah dibaca di perangkat seluler.
Perilaku Polimorfik adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 3 pelajaran total.
Ikhtisar
Perilaku polimorfik memungkinkan kita memperlakukan semua bentuk dengan cara yang sama, sementara masing-masing menjalankan perhitungannya sendiri. Kita akan: (1) mencetak daftar campuran secara seragam, (2) mengurutkan berdasarkan area, dan (3) menghitung jumlah dalam satu perulangan.
Daftar periksa antarmuka dasar
Antarmuka dasar menjaga operasi yang digunakan di berbagai tempat:
- area() dan perimeter() — harus diterapkan oleh setiap bentuk.
- Pembantu kecil opsional seperti label() atau info() untuk pencetakan yang rapi.
- Simpan atribut di dalam bentuk konkret.
Kode: pencetakan seragam
Pencetakan seragam: perulangan hanya menggunakan antarmuka Shape. Setiap objek menjalankan penerapannya sendiri untuk melakukan perhitungan.
public class Main {
static abstract class Shape {
abstract double area();
abstract double perimeter();
String label() { return getClass().getSimpleName(); }
String info() { return String.format("area=%.2f, per=%.2f", area(), perimeter()); }
}
static class Circle extends Shape {
double r; Circle(double r) { this.r = (r < 0) ? 0 : r; }
double area() { return Math.PI * r * r; }
double perimeter() { return 2 * Math.PI * r; }
}
static class Rectangle extends Shape {
double w, h; Rectangle(double w, double h) { this.w = Math.max(0, w); this.h = Math.max(0, h); }
double area() { return w * h; }
double perimeter() { return 2 * (w + h); }
}
public static void main(String[] args) {
Shape[] list = { new Circle(2.0), new Rectangle(3.0, 4.0), new Circle(1.0) };
for (int i = 0; i < list.length; i = i + 1) {
Shape s = list[i];
System.out.println(s.label() + " -> " + s.info());
}
}
}
Pengurutan berdasarkan area (ide)
Ide pengurutan:
- Perbandingan: bandingkan nilai area() dari dua bentuk.
- Untuk data kecil, pengurutan sederhana seperti gelembung/pemilihan sudah cukup.
- Gunakan hanya metode Shape; tanpa pemeriksaan jenis.
Kode: mengurutkan berdasarkan area
Pengurutan sederhana: hanya memerlukan pemanggilan area(). Tidak ada pemeriksaan jenis; inilah kekuatan polimorfisme.
public class Main {
static abstract class Shape { abstract double area(); abstract double perimeter(); String label(){ return getClass().getSimpleName(); } }
static class Circle extends Shape { double r; Circle(double r){ this.r = Math.max(0, r);} double area(){return Math.PI*r*r;} double perimeter(){return 2*Math.PI*r;} }
static class Rectangle extends Shape { double w,h; Rectangle(double w,double h){ this.w=Math.max(0,w); this.h=Math.max(0,h);} double area(){return w*h;} double perimeter(){return 2*(w+h);} }
// Very small bubble sort for beginners (ascending by area)
static void sortByArea(Shape[] arr){
for(int pass=0; pass<arr.length-1; pass=pass+1){
for(int i=0; i<arr.length-1; i=i+1){
if(arr[i].area() > arr[i+1].area()){
Shape tmp = arr[i]; arr[i] = arr[i+1]; arr[i+1] = tmp;
}
}
}
}
public static void main(String[] args) {
Shape[] a = { new Rectangle(3,4), new Circle(2), new Circle(1) };
sortByArea(a);
for(int i=0;i<a.length;i=i+1){
System.out.println(a[i].label() + " area=" + String.format("%.2f", a[i].area()));
}
}
}
Kode: jumlah area
Menjumlahkan: pemanggilan area() dijumlahkan dalam satu perulangan. Setiap elemen melakukan perhitungannya sendiri; kode kita tetap sederhana.
public class Main {
static abstract class Shape { abstract double area(); abstract double perimeter(); }
static class Circle extends Shape { double r; Circle(double r){ this.r=Math.max(0,r);} double area(){return Math.PI*r*r;} double perimeter(){return 2*Math.PI*r;} }
static class Rectangle extends Shape { double w,h; Rectangle(double w,double h){ this.w=Math.max(0,w); this.h=Math.max(0,h);} double area(){return w*h;} double perimeter(){return 2*(w+h);} }
static double totalArea(Shape[] arr){
double sum = 0.0;
for(int i=0;i<arr.length;i=i+1){
sum = sum + arr[i].area(); // polymorphic call
}
return sum;
}
public static void main(String[] args) {
Shape[] list = { new Circle(1), new Rectangle(2,3), new Circle(0.5) };
System.out.println("Total area = " + String.format("%.2f", totalArea(list)));
}
}
Pemeriksaan gaya polimorfisme
Pemeriksaan singkat: Gaya kode mana yang paling baik menggunakan polimorfisme di sini?
Ringkasan
Ringkasan: Kita menulis dengan antarmuka yang sama, dan setiap bentuk menghasilkan hasilnya sendiri. Operasi seperti pencetakan, pengurutan, dan penjumlahan bekerja dengan kode yang seragam.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Perilaku Polimorfik” gratis?
Ya — teks lengkap “Perilaku Polimorfik” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Perilaku Polimorfik”?
Gunakan polimorfisme untuk mencetak, mengurutkan, dan mengagregasi bentuk campuran. Buat algoritme tetap kecil dan mudah dibaca di perangkat seluler. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Java Academy?
Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.
Berapa lama pelajaran “Perilaku Polimorfik” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?
Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Desain
- Implementasi
- Perilaku Polimorfik