Method Private Overriding Java dan Fungsinya
Pengertian
Cara Implementasi Method Private Overriding
- Nama dan Tipe Metode Harus Sama: Metode yang di-overriding harus memiliki nama dan tipe yang sama persis dengan metode yang didefinisikan dalam kelas induk. Jika tidak, ini akan dianggap sebagai deklarasi baru.
- Aksesibilitas: Metode overriding dapat memiliki aksesibilitas yang lebih luas daripada metode yang di-overriding, tetapi tidak dapat memiliki aksesibilitas yang lebih sempit. Misalnya, pengembang tidak dapat mengubah metode private menjadi metode publik saat overriding.
class Parent {
private void display() {
System.out.println(
"Parent's display()");}
public void invokeDisplay() {
// Memanggil metode display()
// di dalam kelas induk.
display(); }
}
class Child extends Parent {
private void display() {
System.out.println(
"Child's display()");}
}
public class Main {
public static void
main(String[] args) {
Child obj = new Child();
// Memanggil metode
// invokeDisplay() dari
// kelas Child.
obj.invokeDisplay();
}
}
class Base {
public void fun()
{System.out.println("Base"
+" fun");}
}
class Derived extends Base {
public void fun()
{/* Overriding Base fun() */
System.out.println("Derived"
+" fun");}
public static void main(String[] args) {
Base obj = new Derived();
obj.fun();}
}
class Base
{
private void fun()
{System.out.println("Base"
+" fun");}
}
class Derived extends Base
{
private void fun()
{System.out.println("Derived"
+" fun");}
public static void main(String[] args)
{Base obj = new Derived();
obj.fun();}
}
// Program Java
// mendemonstrasikan apakah
// dapat dilakukan overriding
// method private dari outer
// class di dalam inner
// classnya sendiri.
class Outer
{
private String msg = "MakanPindangPatin";
private void fun()
{System.out.println("Outer"
+" fun()");}
class Inner extends Outer
{
private void fun()
{System.out.println("Mengaks"
+"es anggota private dari"
+" Outer: "
+msg);}
}
public static void main(String args[]) {
// untuk menciptakan instance
// dari Inner class,
// dibutuhkan instance Outer
// class. Sehingga, diciptakan
// terlebih dahulu Instance
// outer class dan kemudian
// Instance inner class.
Outer o = new Outer();
Inner i = o.new Inner();
// Akan dilakukan pemanggilan
// Inner fun, dengan tujuan
// untuk menampilkan anggota
// private dari Outer yang
// dapat diakses dari Inner.
i.fun();
// o.fun() memanggil Outer fun
// (No run-time polymorphism).
o = i;
o.fun();}
}
Outer fun()
Pada contoh program sebelumnya, telah diciptakan outer class dan inner class. Selanjutnya dilakukan extend inner class dari outer dan diciptakan sebuah method fun() pada kedua class outer dan inner. Jika diamati hasil output program, maka dapat dengan jelas dipahami bahwa method fun() tidaklah overriding. Hal ini karena method private terikat selama waktu kompilasi dan merupakan tipe dari referensi variabel, dan bukan tipe dari object yang menentukan method apa yang akan dipanggil. Sebagai catatan tambahan, method private dapat memiliki performa lebih baik dibandingkan dengan method non private dan method non final yang disebabkan oleh static binding.
Perbandingkan Terhadap C++:
- Pada Java, inner Class diijinkan untuk mengakses anggota data private dari outer class, dimana behavior ini sama seperti C++.
- Pada Java, method yang dideklarasikan sebagai private tidak akan pernah bisa overriding, method tersebut terikat selama waktu kompilasi. Sedangkan behavior ini berbeda dari C++, karena pada C++ memiliki method private virtual.
Fungsi Method
- Keterbatasan Aksesibilitas: Metode yang di-overriding harus memiliki tingkat aksesibilitas yang sama atau lebih luas daripada metode yang didefinisikan dalam kelas induk. Karena metode private memiliki tingkat aksesibilitas yang paling terbatas, kelas turunan hanya dapat mengakses metode private tersebut melalui panggilan ke metode yang tidak bersifat private dalam kelas induk. Ini mungkin membatasi fleksibilitas dalam merancang kelas turunan.
- Kebingungan dan Kesalahan: Penggunaan method private overriding dapat menyebabkan kebingungan dan kesalahan dalam kode, terutama jika tidak dipahami dengan baik. Pengembang yang tidak menyadari adanya overriding private mungkin berpikir bahwa method tersebut sedang membuat metode baru, padahal method tersebut sebenarnya hanya mengganti metode yang ada dalam implementasi yang tidak dapat diakses.
- Penggunaan yang Kurang Umum: Meskipun method private overriding menawarkan fleksibilitas tambahan, penggunaannya tidak seumum method overriding standar. Oleh karena itu, penggunaan yang berlebihan atau tidak tepat dapat membuat kode menjadi sulit dipahami dan sulit dipelihara oleh pengembang lain.
- Kompleksitas Pemahaman: Konsep method private overriding dapat meningkatkan kompleksitas pemahaman dalam kode, terutama untuk pengembang yang kurang berpengalaman. Memahami bagaimana metode private dapat diubah dalam kelas turunan dan bagaimana aksesibilitasnya dipengaruhi oleh konsep overriding dapat memerlukan waktu dan usaha tambahan.
Kesimpulan
7 komentar untuk "Method Private Overriding Java dan Fungsinya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Bagaimana cara untuk melakukan override method private pada Java?
BalasHapusTidak, tidak bisa dilakukan override method private ataupun static pada Java. Method private pada Java tidak terlihat oleh class lain manapun yang membatasi ruang lingkupnya ke class tempat method tersebut dideklarasikan.
HapusKenapa method private tidak bisa dilakukan override pada Java?
BalasHapusKarena tujuan utama pembautan method private adalah supaya method tersebut tidak bisa dilihat atau diakses oleh class lain, atau memang sengaja dirahasiakan.
HapusApa yang terjadi jika dilakukan override pada method private?
BalasHapusKarena override method berfungsi pada dynamic binding, maka method private tidak mungkin untuk dilakukan override pada Java. Method private bahkan tidak terlihat oleh child class, method private hanya dapat terlihat dan dapat diakses pada class tempat method tersebut dideklarasikan. Keyword private memberikan tingkat enkapsulasi tertinggi dalam bahasa Java.
HapusJika tetap dilakukan maka akan muncul pesan peringatan pada kompilator ketika program tersebut dijalankan.
Hapus