Pelajaran modul (2/2)
Metode dan Kelebihan Beban
Metode mendefinisikan perilaku suatu objek. Kita dapat menganggapnya sebagai fungsi yang dideklarasikan di dalam kelas yang beroperasi pada bidang instance objek atau parameter masuk.
Mendefinisikan Metode
Sebuah metode di Java terdiri dari:
- Pengubah akses (misalnya,
public,private). - Jenis pengembalian (misalnya,
int,String, atauvoidjika tidak mengembalikan apa pun). - Nama metode di
camelCase. - Parameter diapit tanda kurung.
- Badan metode diapit kurung kurawal.
class Person {
String name;
public Person(String name) {
this.name = name;
}
// Method with return type String
public String greet() {
return "Ciao, mi chiamo " + name;
}
}Memanggil Metode
Untuk memanggil metode pada objek yang dibuat, kami menggunakan notasi titik .:
public class Main {
public static void main(String[] args) {
Person p = new Person("Marco");
String message = p.greet(); // Calling the method
System.out.println(message);
}
}Metode Kelebihan Beban
Di Java, dua atau lebih metode dalam kelas yang sama dapat memiliki nama yang sama, asalkan metode tersebut memiliki daftar parameter berbeda (dalam jumlah, urutan, atau jenis parameter). Konsep ini dikenal sebagai Kelebihan beban.
Kompilator memutuskan metode mana yang akan dipanggil dengan menganalisis argumen yang disampaikan selama panggilan.
class Printer {
// Method to print an integer
public void printValue(int number) {
System.out.println("Intero: " + number);
}
// Overloaded method to print a string
public void printValue(String text) {
System.out.println("Testo: " + text);
}
}Parameter Melewati Nilai
Di Java, semua parameter diteruskan berdasarkan nilai (nilai demi nilai). Artinya ketika Anda meneruskan argumen ke suatu metode, Java akan membuat salinan nilai variabel dan meneruskannya ke metode tersebut.
- Untuk tipe primitif, nilai asli di luar metode tidak pernah berubah, meskipun diubah di dalam metode.
- Untuk objek/referensi, referensi ke objek disalin. Ini berarti bahwa meskipun kita tidak dapat mengubah alamat memori yang ditunjuk oleh objek asli, kita dapat mengubah keadaan internalnya (misalnya, bidangnya) dan perubahan tersebut akan terlihat di luar.
Batasan Kelebihan Beban: Tipe Pengembalian
Penting untuk dicatat bahwa Anda tidak dapat membebani metode hanya berdasarkan tipe pengembalian. Misalnya, kode berikut akan menyebabkan kesalahan kompilasi:
class Example {
// ERROR: The signature of the two methods is considered identical
public int getNumber() { return 42; }
public double getNumber() { return 42.0; }
}Kompiler perlu membedakan metode hanya berdasarkan parameter untuk memutuskan versi mana yang akan dipanggil pada waktu kompilasi (kelebihan beban diselesaikan pada waktu kompilasi).
Cobalah sendiri
Tambahkan metode public int add(int a, int b) ke kelas Kalkulator yang mengembalikan jumlah dua angka. Dalam metode utama, panggil metode ini pada objek calc dan tetapkan hasilnya ke variabel integer.
Tunjukkan petunjuk
Deklarasikan metode ini sebagai `public int add(int a, int b) { return a + b; }` dan memanggilnya dalam metode utama sebagai `int result = calc.add(5, 10);`.
Solusi tersedia setelah 3 upaya
Bebankan metode tambah di kelas Kalkulator dengan membuat metode lain yang menerima dua parameter ganda dan mengembalikan jumlahnya.
Tunjukkan petunjuk
Tulis `tambahan ganda publik(ganda a, ganda b) { return a + b; }` tepat di bawah metode penambahan pertama.
Solusi tersedia setelah 3 upaya
Tambahkan metode public int perkalian(int a, int b) ke kelas Kalkulator yang mengembalikan produk dari dua angka. Dalam metode utama, panggil metode ini pada objek calc dan tetapkan hasilnya ke variabel integer.
Tunjukkan petunjuk
Deklarasikan metode ini sebagai `public int Multiply(int a, int b) { return a * b; }` dan memanggilnya dalam metode utama sebagai `int result = calc.multiply(5, 10);`.
Solusi tersedia setelah 3 upaya