Langsung ke konten utama

Overloading atau Overriding method static pada Java

Pada arikel ini akan dipelajari materi tentang Overloading dan Overriding dari method static pada Java, namun sebelum mempelajari hal tersebut, terlebih dahulu pelajari pengertian dari Overloading dan Overriding.

Overriding: adalah fitur bahasa OOP seperti Java yang berkaitan dengan runtime polymorphism. Sebuah subclass atau derived class menyediakan implementasi spesifik dari sebuah method dalam superclass atau base class. Implementasi yang akan dieksekusi, akan diputuskan saat runtime dan keputusan yang dibuat tersebut adalah sesuai menurut object yang dipanggil untuk digunakan pada program. 

Catatan: signature dari kedua method harus sama.

Overloading: Overloading adalah fitur dari bahasa OOP seperti Java yang berkaitan dengan compile time atau static polymorphishm. Fitur ini mengizinkan method berbeda untuk memiliki nama yang sama, tetapi signature berbeda, khususnya angka dari input parameter dan tipe dari input parameternya. 

Catatan: pada Java dan C++, method tidak bisa overloading menurut tipe return-nya.

Overloading Static Method pada Java
Dapat dimiliki dua atau lebih method yang bernama sama, tetapi berbeda dalam hal input parameternya. Contoh, perhatikan program Java berikuti ini.

/* filename Test.java */

public class Test {

 

public static void foo() 

{System.out.println("Test.foo"

+"() dipanggil");}

 

public static void foo(int a

{System.out.println("Test.foo"

+"(int) dipanggil");}

 

public static void main(String args[])

{Test.foo();

Test.foo(10);}

 

}

Output:
Test.foo() dipanggil
Test.foo(int) dipanggil

Melakukan Overloading Method yang Hanya Berbeda pada Static Keyword
Tidak bisa dilakukan overloading dua method pada Java jika keduanya berbeda hanya pada bagian keyword static atau angka dari parameter dan tipe dari parameternya adalah sama. Perhatikan contoh program berikut ini. Behavior adalah sama pada C++.

/* filename Test.java */

public class Test {

 

public static void foo() 

{System.out.println("Test.foo"

+"() dipanggil");}

 

public void foo() 

// Compiler Error: cannot 

// redefine foo().

System.out.println("Test.foo"

+"(int) dipanggil");

}

 

public static void main(String args[]

{Test.foo();}

 

}

Output:
Compiler Error, cannot redefine foo()

Overriding Static Method pada Java
Static method dapat dideklarasikan dengan signature yang sama dalam subclass, tetapi tidak mengesampingkan overriding didalamnya karena tidak ada runtime polymorphism. Karena hal tersebut, maka tidak bisa dilakukan overriding static method pada Java. Jika derived class dedifinisikan sebagai method static dengan signature sama sebagai method static dalam base class, maka method dalam derived class akan menyembunyikan method dalam base class.

// Program Java memperlihatkan

// bahwa jika static method di

// redefinisi oleh derived

// class, maka itu bukanlah

// overriding.

 

/* Superclass */

class Base 

{

// Static method dalam base

// class akan tersembunyi

// dalam subclass.

public static void display() 

{System.out.println("Static "

+"atau class method dari"

+" Base");}

 

// Non static method akan

// overriding dalam derived

// class.

public void print() 

{System.out.println("Non-sta"

+"tic atau Instance method "

+"dari Base");}

}

 

/* Subclass */

class Derived extends Base 

{

// method ini menyembunyikan

// display() dalam base.

public static void display() 

{System.out.println("Static "

+"atau class method dari"

+" Derived");}

 

// method overriding print()

// dalam base.

public void print() 

{System.out.println("Non-sta"

+"tic atau Instance method "

+"dari Derived");}

}

 

/* Driver class */

public class Test 

{

 

public static void main(String args[ ]

{

Base obj1 = new Derived();

// Sesuai dengan aturan

// overriding maka akan

// dipanggil menuju class

// Derive static overriding

// method.

 

// Ketika static method tidak

// bisa overriding, maka akan

// memanggil base display().

obj1.display();

 

// Berikut cara kerja

// overriding dan derived

// print() ketika dipanggil.

obj1.print();}

 

}

Output:
Static atau class method dari Base
Non-static atau Instance method dari Derived

Beberapa Aturan Penting untuk Overriding dan Static Method pada Java
  • satu, Untuk class (atau static) method, method menurut tipe dari reperensi dipanggil, tidak menurut object-nya yang jadi referensi, artinya method yang akan dipanggil diputuskan pada saat waktu kompilasi program.
  • dua, Untuk instance (atau non-staticmethod, method yang dipanggil menurut tipe dari object yang akan direferensikan, tetapi tidak untuk tipe dari referensi, dengan kata lain method yang akan dipanggil diputuskan saat runtime.
  • tiga, Instance method tidak bisa overriding pada sebuah static method, dan sebuah static method tidak bisa disembunyikan pada instance method. Contoh, berikut program memiliki dua compiler error.

// Program Java memperlihatkan

// bahwa jika static method

// diredefinisi oleh deriver

// class, maka itu bukan

// overriding tetapi hidding.

 

/* Superclass */

class Base 

{

// Method static dalam base

// class akan disembunyikan

// dalam subclass.

public static void display() 

{System.out.println("Stati"

+"c atau class method dari"

+" Base");}

 

// Non static method akan

// overriding dalam derived

// class.

public void print() 

{System.out.println("Non-sta"

+"tic atau Instance method"

+" dari Base");}

}

 

/* Subclass */

class Derived extends Base 

{

// Static dihilangkan pada

// bagian ini (karena

// kompilator error).

public void display() 

{System.out.println("Non-sta"

+"tic method dari Derived");}

 

// Static ditambahkan pada

// bagian ini (karena

// kompilator error).

public static void print() 

{System.out.println("Stati"

+"c method dari Derived");}

}


  • empat, Dalam subclass atau derived class, dapat dilakukan overloading method inheritance dari superclass. Method overload disembunyikan ataupun juga disebut overriding method superclassmethod tersebut merupakan method baru dan unik yang terdapat pada subclass.

Komentar

  1. Apa yang dimaksud dengan overloading dan overriding pada bahasa Java?

    BalasHapus
    Balasan
    1. Overloading terjadi ketika dua atau lebih method dalam satu class memiliki nama yang sama tetapi dengan parameter yang berbeda. Sedangkan overriding terjadi jika dua method memiliki nama dan parameter method yang sama, dimana salah satu method ada di class induk, dan method lainnya ada di class anak.

      Hapus
  2. Mungkinkah overloading dan overriding terjadi pada method yang sama pada bahasa pemrograman Java?

    BalasHapus
    Balasan
    1. Tidak mungkin overloading dan overriding terjadi dalam waktu yang bersamaan karena overloading menyiratkan parameter yang berbeda pada Java.

      Hapus
  3. Trima kasih, artikel penjelasan tentang overloading dan overriding yang sangat membantu.

    BalasHapus

Posting Komentar

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