this → Artikel Baru – ( Atrikel Lama ↓ )

3 Contoh Program Method Private Overriding pada Java

Perhatikan Program Java berikut untuk penerapan Overriding atau Runtime Polymorphism.

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();} 

}


Program tersebut akan mencetak "Derived fun". Dimana referensi Base class 'obj' mengacu kepada sebuah object derived class pada Java. Ketika fun() dipanggil dalam obj, maka pemanggilan tersebut dibuat berdasarkan dari tipe object referred, bukan menurut referensi.


Pahami pula, tentang semua konsep desain Web untuk tingkat pemula melalui materi lengkap JAVA [klik].


Overriding dengan Method Private
Perkirakan hasil output dari program berikut.

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();} 

}


Didapat hasil compiler error "funt() has private access in Base", sehingga kompilator akan mencoba untuk memanggil fungsi base class, bukan derived class, yang artinya fun() tidak overriding.

Inner class dapat mengakses anggota private dari outer class-nya sendiri, contoh pada program berikut, fun() dari inner akan mengakses anggota data private msg yang dapat berjalan lancar pada waktu kompilasi program.

Baca juga, tentang materi bahasa pemrograman lainnya melalui Materi Lengkap 

Bahasa Pemrograman [klik].


// 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();}

 

}

Output:
Mengakses anggota private dari Outer: MakanPindangPatin
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++
  • satu, Pada Java, inner Class diijinkan untuk mengakses anggota data private dari outer class, dimana behavior ini sama seperti C++.
  • dua, Pada Java, method yang dideklarasikan sebagai private tidak akan pernah bisa overridingmethod tersebut terikat selama waktu kompilasi. Sedangkan behavior ini berbeda dari C++, karena pada C++ memiliki method private virtual.

Komentar

  1. Bagaimana cara untuk melakukan override method private pada Java?

    BalasHapus
    Balasan
    1. Tidak, 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.

      Hapus
  2. Kenapa method private tidak bisa dilakukan override pada Java?

    BalasHapus
    Balasan
    1. Karena tujuan utama pembautan method private adalah supaya method tersebut tidak bisa dilihat atau diakses oleh class lain, atau memang sengaja dirahasiakan.

      Hapus
  3. Apa yang terjadi jika dilakukan override pada method private?

    BalasHapus
    Balasan
    1. Karena 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.

      Hapus
    2. Jika tetap dilakukan maka akan muncul pesan peringatan pada kompilator ketika program tersebut dijalankan.

      Hapus

Posting Komentar

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung. :D

Catatan: setiap iklan yang ditayangkan pada blog ini bersumber dari google adsense. Dengan jenis iklan yang dipilih adalah, sebagai berikut.

POIN 1, Iklan yang ditampilkan hanya boleh berbahasa indonesia atau berbahasa inggris. Tidak menerima jenis iklan dalam bahasa yang lain selain yang telah disebutkan karena blog ini dibuat untuk para pengunjung dari negara atau orang yang berbahasa Indonesia.

POIN 2, Setiap gambar yang ditampilkan pada iklan sifatnya tidak mengganggu para pengunjung yang melihat blog, atau tidak boleh menampilkan gambar yang bersifat menjijikkan atau merangsang rasa mual.

POIN 3, Jenis iklan yang dipasang bukan merupakan iklan spam, atau berisi dan mengarahkan pengunjung ke alamat yang berbahaya atau bersifat penipuan.

POIN 4, Segala bentuk iklan tunduk dan patuh pada ketentuan dari pihak Adsense google dan pemilik blog.

POIN 5, Segala jenis iklan yang tidak bertentangan dengan poin 1-4 yang dijelaskan sebelumnya, maka iklan tersebut dapat ditampilkan pada blog.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Enkapsulasi pada Java

Perbedaan stdio.h dan stdlib.h pada Bahasa C

Penjelasan Singkat tentang Konsep Asosiasi, Komposisi, dan Agregasi pada Java

3 Jenis Utama Looping pada Java