Langsung ke konten utama

Iklan





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.



Iklan

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.


Iklan

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
  4. Java sering direkomendasikan sebagai bahasa pemrograman pertama yang perlu dipelajari oleh pengembang baru sebelum mempelajari bahasa pemrograman lain. Bahasa pemrograman Java memiliki kelebihan dibandingkan dengan bahasa pemrograman yang lain yaitu dapat berjalan pada platform atau perangkat apapun. Selain itu, Java juga memiliki akses ke banya library dan juga mendapatkan banyak dukungan dari berbagai komunitas pengembang yang akan membantu mempermudah untuk menyelesaikan permasalahan ketika mempelajari bahasa pemrograman ini, salah satunya adalah seperti mempelajari tentang materi overloading pada Java

    BalasHapus
  5. 1234567*
    123456*8
    12345*78
    1234*678
    123*5678
    12*45678
    1*345678
    *2345678
    Ada yang bisa bantu menyelesaikan pola nya dalam bentuk program Java?

    BalasHapus
    Balasan
    1. Coba gunakan kode program ini:

      For(i=1;i<=8;i++)
      {
      For(j=1;j<=8;j++)
      {
      If(j==9-i)
      Printf("*");
      Else
      Printf("%d",I);
      }
      }

      Hapus
    2. Ini juga bisa:

      public class Pattern1 {

      public static void main(String args[]) {

      int i, j;

      for (i = 8; i >=1; i--) {
      for (j = 1; j <= 8; j++) {
      if(i == j)
      System.out.print("*");
      else
      System.out.print(j);
      }
      System.out.println();
      }
      }
      }

      Hapus
    3. Ini gan, monggo dicoba,

      for(int i = 8; i > 0; i--) {
      for(int j = 1; j <= 8; j++){
      if(j != i)
      System.out.print(String.valueOf(j));
      else
      System.out.print("*");
      }
      System.out.println("");
      }

      Hapus
  6. Saya menemukan kesalahan pada bagian ini...
    pada section string java... disini tidak dapat dibuka *SPLIT() METHOD*, apa mungkin ada yang salah?

    BalasHapus
    Balasan
    1. Tambahkan tanda dot(.), mungkin dapat bekerja.

      Hapus
  7. Apakah materi tentang java overloading yang saya pelajari sekarang adalah materi Java tingkat lanjut, atau Java Inti?

    BalasHapus
    Balasan
    1. Saya rasa materi yang disampaikan pada blog ini sudah hampir mencakup semua hal dasar tentang Java. Mungkin yang dimaksud dengan definisi Java tingkat lanjut tersebut adalah Framework yang dikembangkan dengan bahasa pemrograman Java. Jika, benar maka pada blog ini memang belum dipelajari.

      Hapus
  8. Saat ini saya sedang berkuliah disalah satu universitas swasta pada Jurusan Teknik Informatika, dan sedang masuk semester 2, saya sedang mengalami permasalahan tentang penjelasan antara perbedaan Java dan OOP? bisa bantu jelaskan?

    BalasHapus
    Balasan
    1. Saya rasa anda memiliki kesalahpahaman tentang definisi fundamental Java. OOP pada dasarnya adalah sebuah konsep atau paradigma pemrograman yang diikuti oleh beberapa tingkatan bahasa pemrograman tertentu, termasuk juga Java.

      Hapus
    2. OOP bukan bahasa pemrograman. OOP adalah gaya pemrograman yang menggunakan object, bukan bahasa pemrograman yang biasanya normal dipelajari (a.k.a dasar kode program). OOP itu lebih ke pola pikir dalam membuat program, sedangkan Java adalah salah satu fasilitas yang digunakan untuk membuat program tersebut.

      Hapus
  9. class baap
    {
    public int h=4;
    public int geth()
    {
    System.out.println("Baap"+h);
    return h;
    }
    }

    public class beta extends baap{
    public int h=44;
    public int geth(){
    System.out.println("Beta" +h);
    }

    public statis void main(String[]args)
    {
    baap b = new beta();
    System.out.println(b.h+" "+b.geth());

    beta bb = (Beta) b;
    System.out.println(bb.h+" "bb.geth());

    }

    }

    Ada yang bisa bantu, hasil keluaran atau outputnya seperti apa?

    BalasHapus
    Balasan
    1. Kemungkinan akan terjadi error, karena method utama ditulis dapat bentuk static dan kesalahan sintak lainnya juga perlu diperbaiki. Jika telah diperbaiki, kemungkinan hasilnya adalah:

      4 44
      44 44

      Hapus
  10. Saya masih mengalami kesulitan dalam memahami materi tentang overloading pada artikel ini, adalah baru mulai belajar coding. Ada yang bisa bantu saya, supaya bisa lebih memahami materi ini...

    BalasHapus
    Balasan
    1. Untuk lebih mudah dapat dimulai dari mempelajari topik pada bagian daftar isi dimulai dari bagian paling atas terlebih dahulu kemudian berlanjut kebagian bawah pada link berikut:

      https://www.elfanmauludi.id/p/java.html

      Jika masih menemukan masalah, coba kemukakan masalahnya secara lebih spesifik, dan bisa diajukan pada kolom komentar,

      happy coding :D

      Hapus

Posting Komentar

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