Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Mari 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)
    Compiler akan memilih method yang tepat berdasarkan argumen yang kamu berikan. Inilah polimorfisme saat kompilasi!
  • 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 method format, 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
        
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online