Dasar method overloading
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 28 dari 87.
Polymorphism berarti "banyak bentuk". Di Java, polymorphism memungkinkan object berperilaku berbeda berdasarkan konteks. Salah satu bentuk polymorphism adalah method overloading, yang juga disebut polymorphism saat kompilasi karena Java menentukan method mana yang akan dipanggil selama kompilasi.
Method overloading memungkinkan kamu mendefinisikan beberapa method dengan nama yang sama, tetapi parameter yang berbeda. Compiler membedakan method tersebut berdasarkan jumlah, tipe, atau urutan parameter:
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public int add(int a, int b, int c) {
return a + b + c;
}
public double add(double a, double b) {
return a + b;
}
}Saat kamu memanggil add(5, 3), Java menggunakan method pertama. Memanggil add(5, 3, 2) memicu method kedua, dan add(5.0, 3.0) memanggil method ketiga. Compiler memilih versi yang tepat berdasarkan argumen yang kamu berikan.
Perhatikan bahwa hanya mengubah tipe nilai balik bukan overloading yang valid. Daftar parameter harus berbeda:
// Overloading ini TIDAK valid, tidak akan bisa di-compile
public int getValue() { return 1; }
public double getValue() { return 1.0; } // Error!Kamu sebenarnya sudah pernah melihat overloading sebelumnya pada constructor overloading. Method overloading mengikuti aturan yang sama dan memberikan fleksibilitas dengan memungkinkan satu nama method menangani berbagai skenario input.
Tantangan
MudahMari buat pemformat pesan yang menunjukkan method overloading dengan menyediakan beberapa cara untuk memformat pesan. Kamu akan membuat class utilitas dengan beberapa method format yang di-overload untuk menangani berbagai skenario input.
Kamu akan menyusun kodemu dalam dua file:
MessageFormatter.java: Buat class yang menyediakan pemformatan pesan yang fleksibel melalui method yang di-overload. Pemformat pesanmu harus memiliki:- Method
format(String message)yang mengembalikan pesan yang diapit tanda kurung siku:[message] - Method
format(String message, int repeatCount)yang mengembalikan pesan yang diulang sebanyak jumlah yang ditentukan, dengan spasi sebagai pemisah - Method
format(String message, String prefix)yang mengembalikan pesan dengan prefix yang ditambahkan:prefix: message - Method
format(String message, String prefix, String suffix)yang mengembalikan:prefix: message (suffix)
- Method
Main.java: Tunjukkan cara kerja keempat method yang di-overload secara bersamaan. Kamu akan menerima empat input: pesan (String), jumlah pengulangan (int), prefix (String), dan suffix (String). Buat object MessageFormatter dan panggil setiap versi methodformat, lalu cetak setiap hasil pada barisnya sendiri:- Pertama, format hanya dengan pesan
- Kedua, format dengan pesan dan jumlah pengulangan
- Ketiga, format dengan pesan dan prefix
- Keempat, format dengan pesan, prefix, dan suffix
Kamu akan menerima empat input: teks pesan, berapa kali pesan harus diulang, string prefix, dan string suffix.
Misalnya, jika pesannya adalah "Hello", jumlah pengulangannya 3, prefix-nya "INFO", dan suffix-nya "done", output-mu harus menampilkan empat versi berbeda dari pesan yang sama, masing-masing menggunakan method yang di-overload yang berbeda!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Baca input
String message = scanner.nextLine();
int repeatCount = Integer.parseInt(scanner.nextLine());
String prefix = scanner.nextLine();
String suffix = scanner.nextLine();
// TODO: Buat object MessageFormatter
// TODO: Panggil format hanya dengan message, lalu tampilkan hasilnya
// TODO: Panggil format dengan message dan repeatCount, lalu tampilkan hasilnya
// TODO: Panggil format dengan message dan prefix, lalu tampilkan hasilnya
// TODO: Panggil format dengan message, prefix, dan suffix, lalu tampilkan hasilnya
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online