Rabu, Mei 12, 2021

Method Overloading pada Java

Overloading memungkinkan berbagai method yang berbeda untuk memiliki nama yang sama, tetapi dengan signature yang berbeda pada bahasa pemrograman Java. Signature dapat berbeda oleh angka dari input parameter atau tipe dari input parameter atapun juga keduanya. Overloading juga berkaitan dengan compile time (atau static) polymorphism.

// Program Java

// mendemonstrasikan kerja

// dari method overloading

// pada Java.

public class Sum

 

// melakukan overloading sum()

// yang mengambil dua

// parameter int.

public int sum(int x, int y

{return (x + y);} 

 

// melakukan overloading sum()

// yang mengambil tiga

// parameter int.

public int sum(int x, int y, int z

{return (x + y + z);} 

 

// melakukan overloading sum()

// yang mengambil dua

// parameter double.

public double sum(double x, double y

{return (x + y);} 

 

/* Driver code */

public static void main(String args[]

Sum s = new Sum(); 

System.out.println(s.sum(10, 20)); 

System.out.println(s.sum(10, 20, 30)); 

System.out.println(s.sum(10.5, 20.5)); 

}

 

}

Output:
30
60
31.0

Jika Prototipe Tidak Cocok dengan Argumen
Secara prioritas, kompilator akan mengambil langkah-langkah berikut ini:
  • satu, Ketik Conversion tetapi dengan tipe yang lebih tinggi (dalam hal rentang) pada 'family' yang sama.
  • dua, Ketik Conversion ke 'family' yang lebih tinggi selanjutnya jika tidak terdapat tipe data long yang tersedia untuk tipe data int, maka yang akan dicari adalah tipe data float. Berikut adalah contoh dari penerapan konsep tersebut:

class Demo 

public void show(int x

{System.out.println("In int" 

+x);} 

 

public void show(String s

{System.out.println("In"

+" String" 

+s);}

 

public void show(byte b

{System.out.println("In"

+" byte"

+b);}

}

 

class UseDemo 

{

public static void main(String[] args

{byte a = 25

Demo obj = new Demo();

 

// akan menuju ke argumen byte 

obj.show(a); 

 

// String

obj.show("hello");

 

// Int  

obj.show(250); 

 

// Ketika tipe data char tidak

// tersedia, maka tipe data

// yang lebih tinggi dari char

// dalam hal rentang adalah

// int.

obj.show('A');

 

// String 

obj.show("A"); 

 

// Ketika tipe data float

// tidak tersedia dan juga

// bukan merupakan tipe data

// yang lebih tinggi, maka

// pada tahap ini akan terjadi

// error.

obj.show(7.5);}

}


Keuntungan dari Overloading
Keuntungannya adalah tidak perlu menciptakan dan mengingat nama-nama fungsi yang berbeda untuk melakukan tugas yang sama. Contohnya, pada program berikut ini jika overloading tidak didukung oleh Java, maka harus diciptakan method dengan nama sum1, sum2, ..., dan seterusnya.

Method Overloading pada Tipe Return
Tidak bisa dilakukan overloading oleh tipe return. Behavior ini juga sama pada C++, berikut contoh program untuk rincian lebih lengkap dari pemahaman tersebut.

public class Main 

 

public int foo() { return 10; } 

 

// compiler error: foo() sudah

// didefinisikan.

public char foo() { return 'a'; } 

 

public static void main(String args[]){}

 

}


Namun, method overloading pada tipe return mungkin dapat dilakukan pada kasus dimana tipe data dari fungsi akan dipanggil secara spesifik dan eksplisit. Perhatikan contoh program berikut ini:

// Program Java untuk

// mendemonstrasikan kerja

// dari method overloading

// pada static method.

public class Main

 

public static int foo(int a) { return 10; } 

 

public static char foo(int a, int b) { return 'a'; } 

 

public static void main(String args[]

System.out.println(foo(1)); 

System.out.println(foo(1, 2)); 

}

 

}

Output:
10
a

// Program Java

// mendemonstrasikan kerja

// dari method overloading

// dalam sebuah method.

class

public int foo(int a)

{return 10;} 

 

public char foo(int a, int b

{return 'a';} 

 

public class Main 

public static void main(String args[]

{A a = new A(); 

System.out.println(a.foo(1)); 

System.out.println(a.foo(1, 2));}

}

Output:
10
a

Overloading pada method static
Method static dapat memiliki lebih dari satu static method dengan nama yang sama, tetapi berbeda pada input parameternya.

Method Overloading yang berbeda hanya pada bagian keyword static
Tidak dapat dilakukan overloading dua method pada Java jika berbeda hanya pada keyword static-nya saja atau angka dari parameter dan tipe dari parameter adalah sama.

Overloading pada main() Java
Seperti halnya static method lainnya, main() dapat dilakukan overloading pada Java. Berikut adalah contoh programnya.

// Sebuah program Java dengan

// overloading main().

import java.io.*

 

public class Test 

 

/* Normal main() */

public static void main(String[] args

{System.out.println("Hi "

+"Peek (from main)"); 

Test.main("Peek");} 

 

/* Overloading main method */

public static void main(String arg1

{System.out.println("Hi, " 

+ arg1); 

Test.main("Dear Kon"

"My Flen");} 

 

public static void main(String arg1, String arg2

{System.out.println("Hi, " 

+arg1 

+", "

+arg2);}

 

}

Output:
Hi Peek (from main)
Hi, Peek
Hi, Dear Kon, My Flen

Java mendukung operator overloading
Tidak seperti C++, Java tidak mengijinkan user-defined overloading operator. Secara internal Java melakukan overloading operator.

Perbedaan antara overloading dan overriding pada Java
  • satu, Overloading adalah tentang fungsi yang sama tetapi memiliki signature yang berbeda. Overriding adalah tentang fungsi yang sama, signature yang sama, tetapi class yang terhubung melalui inheritance berbeda seperti diperlihatkan pada gambar 1.


  • dua, Overloading adalah contoh dari compiler time polymorphism dan overriding adalah contoh dari runtime polymorphism.

6 komentar:

  1. Apa yang dimaksud dengan method overloading pada bahasa pemrograman Java?

    BalasHapus
    Balasan
    1. Method overloading adalah fitur yang memungkinkan class memiliki lebih dari satu method yang memiliki nama yang sama jika daftar argumennya berbeda pada bahasa pemrograman Java. Hal ini mirip dengan constructur Java overloading, yang juga memungkinkan class memiliki lebih dari satu constructor yang memiliki daftar argumen yang berbeda.

      Hapus
  2. Apa perbedaan antara overloading dan overring pada bahasa pemrograman Java?

    BalasHapus
    Balasan
    1. Method overloading adalah kondisi dimana dua atau lebih method dalam satu class memiliki nama method yang sama tetapi dengan parameter yang berbeda. Sendangkan method overriding terjadi ketika dua method memiliki nama dan paramter method adalah sama dimana salah satu method ada di class induk, dan method lainnya dalah di class anak.

      Hapus
  3. Apa keuntungan menggunakan method overloading pada bahasa pemrograman Java?

    BalasHapus
    Balasan
    1. Method overloading dapat digunakan untuk meningkatkan kemampuan program pada Java. Dimana method overloading akan memberikan fleksibilitas bagi programmer untuk memanggil method serupa untuk berbagai jenis data. Overloading jgua dapat digunakan pada constructor untuk membuat object baru dengan jumlah data yang berbeda.

      Hapus

Respon komentar 7 x 24 jam, so please be patient :D