Rabu, April 24, 2019

Overloading atau Overriding method static pada Java

Terlebih dahulu didefinisikan pengertian Overloading dan Overriding.

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 adalah menurut objek yang dipanggil untuk digunakan. 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 parameter. Catatan: pada Java dan C++, method tidak bisa overloading menurut tipe return-nya.

Dapatkan dilakukan overloading static method?

Jawabannya adalah 'Ya'. Dapat dimiliki dua atau lebih method yang bernama sama, tetapi berbeda dalam input parameternya. Contoh, perhatikan program Java berikuti ini.

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

Dapatkah dilakukan overloading method yang hanya berbeda pada static keyword?
Tidak bisa dilakukan overloading dua method pada Java jika keduanya berbeda hanya pada static keyword (angka dari parameter dan tipe dari parameter adalah sama). Perhatikan contoh program berikut ini. Behavior adalah sama pada C++.

Output:
Compiler Error, cannot redefine foo()

Dapatkan dilakukan 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 jawabannya adaalah 'tidak bisa'. 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.

Output:
Static or class method from Base
Non-static or Instance method from 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 objek yang jadi referensi, artinya method yang akan dipanggil diputuskan pada saat waktu compile.
dua, Untuk instance (atau non-static) method, method yang dipanggil menurut tipe dari objek 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.

empat, Dalam subclass (atau derived class), dapat dilakukan overloading method inheritance dari superclass. Method overload disembunyikan ataupun juga overriding method superclass, method tersebut merupakan method baru, unik pada subclass.





Tidak ada komentar:

Posting Komentar

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