Artikel Terbaru

Cara Mudah Menggunakan Atribut OnDradEnd pada Elemen HTML

Atribut event ondragend merupakan salah satu atribut pada html yang akan bekerja ketika user telah selesai melakukan drag pada elemen html. Fitur drag and drop merupakan fitur yang umum pada html5. Setiap elemen pada html dapat dilakukan drag dengan menggunakan atribut draggable pada html5.

2 Kondisi Utama Referensi Object Subclass dan Subclass vs Referensi Superclass Java

Pada Java, semua non static berdasarkan pada tipe runtime dari object yang mendasarinya ketimbang dari tipe referensi yang menuju ke object. Namun demikian, Tidaklah penting tipe apa yang digunakan dalam deklarasi object karena behavior-nya akan tetap sama.

Prasyarat Pengetahuan: Inheritance pada Java

Cara Menghubungkan Sebuah Object Subclass pada Java
Ada dua pendekatan yang dapat digunakan untuk menghubungkan sebuah object subclass pada Java, dimana keduanya memiliki kelebihan dan kekurangan satu sama lain. Dampak deklarasi tersebut dapat dilihat dalam method yang tampak pada saat waktu kompilasi program Java.
  • satu, Pendekatan pertama (referensi yang dilakukan menggunakan referensi superclass): Sebuah variabel referensi dari sebuah superclass dapat digunakan untuk menghubungkan derived object subclass apapun dari superclass-nya. Jika method ditampilkan dalam Super Class, tetapi overriding oleh subclass, maka overriding method yang akan dieksekusi.
  • dua, Pendekatan kedua (referensi menggunakan referensi dari subclass): Sebuah referensi subclass dapat digunakan untuk menghubungkan object-nya sendiri.

Perhatikan penjelasan kedua contoh pendekatan berikut ini.

// Program Java untuk

// mengilustrasikan referensi

// menuju sebuah subclass dari

// class dasar.

class Bicycle 

// class Bicycle class

// memiliki dua fields.

public int gear; 

public int speed; 

  

// class Bicycle memiliki satu

// constructor.

public Bicycle(int gear, int speed

{this.gear = gear; 

this.speed = speed;} 

  

// class Bicycle memiliki tiga

// method.

public void applyBrake(int decrement

{speed -= decrement;} 

  

public void speedUp(int increment

{speed += increment;} 

 

// method toString() untuk

// mencetak informasi dari

// Bicycle.

public String toString(){ 

return("No of gears are "+gear 

 +"\n"

 + "speed of bicycle is "+speed);} 

 

/* derived class */

class MountainBike extends Bicycle 

// subclass MountainBike

// menambahkan satu field.

public int seatHeight; 

 

// subclass MountainBike

// memiliki satu constructor.

public MountainBike(int gear,int speed

int startHeight

{// memanggil base-class

// (Bicycle) constructor.

super(gear, speed); 

seatHeight = startHeight;} 

  

// subclass MountainBike

// menambahkan satu method.

public void setHeight(int newValue

{seatHeight = newValue;} 

 

// overriding toString()

// method dari Bicycle untuk

// mencetak infor lebih

// banyak.

@Override

public String toString() 

{return (super.toString()

+"\nseat height is"

+seatHeight);}  

 

/* driver class */

public class Test 

public static void main(String args[]){ 

// menggunakan referensi

// superclass.

 

/* pendekatan pertama */ 

Bicycle mb2 = new MountainBike(4, 200, 20); 

  

// menggunakan referensi()

// subclass.

 

/* pendekatan kedua */ 

MountainBike mb1 = new MountainBike(3, 100, 25); 

  

System.out.println("seat"

+" height of first bicycle"

+" is "

+mb1.seatHeight); 

   

// pada kasus method

// overriding, method subclass

// akan selalu dieksekusi.

System.out.println(mb1.toString()); 

System.out.println(mb2.toString()); 

 

// Statement berikut ini

// bernilai invalid karena

// Bicycle tidak

// mendefinisikan sebuah

// seatHeight.

 

// System.out.println("seat

// height of second bicycle is

// "+ mb2.seatHeight);.

 

// Statement berikut ini

// bernilai invalid karena

// Bicycle tidak

// mendefinisikan method

// setHeight().

// mb2.setHeight(21);.

}

Output:
seat height of first bicycle is 25
No of gears are 3
speed of bicycle is 100
seat height is 25
No of gears are 4
speed of bicycle is 200
seat height is 20

Penjelasan:
  • satu, object dari class MountainBike diciptakan dan menggunakan referensi subclass 'mb1'. Dengan menggunakan referensi tersebut maka dapat dilakukan akses pada kedua bagian method dan variabel dari definisi object oleh superclass ataupun subclass. Untuk lebih memahami perhatikan gambar 1 berikut ini.
MountainBike mb1 = new MountainBike(3, 100, 25);

Akses pada kedua bagian method dan variabel dari definisi object oleh superclass ataupun subclass pada Java
Gambar 1 Akses pada kedua bagian method dan variabel dari definisi object oleh superclass ataupun subclass pada Java

  • dua, Selanjutnya diciptakan kembali object dari class MountainBike, tetapi kali ini direferensikan dengan menggunakan referensi superclass Bicycle 'mb2'. Dengan menggunakan referensi ini, maka akan dimiliki akses hanya ke bagian method dan variabel saja dari definisi object oleh superclass seperti diperlihatkan pada gambar 2.

Bicycle mb2 = new MountainBike(4, 200, 20);

Akses hanya ke bagian method dan variabel saja dari definisi object oleh superclass pada Java.
Gambar 2 Akses hanya ke bagian method dan variabel saja dari definisi object oleh superclass pada Java.

  • tiga, Ketika referensi 'mb1' memiliki akses menuju ke field 'seatHeight', maka dapat dicetak hasilnya.

System.out.println("seat height of first bicycle  is " + mb1.seatHeight);

  • empat, Jika terdapat method yang ditampilkan pada superclass, tetapi overriding oleh subclass, dan jika object dari subclass tersebut telah diciptakan, maka referensi apapun yang digunakan baik itu subclass ataupun superclass, maka method overriding dalam subclass tersebut akan selalu dieksekusi. Jadi, kedua statement berikut akan memanggil method toString() dari class MountainBike.

System.out.println(mb1.toString());
System.out.println(mb2.toString());

  • lima, Ketika referensi dibuat oleh 'mb2' dari tipe Bicycle, maka akan didapati waktu kompilasi error pada statement berikut ini.

System.out.println("seat height of second bicycle  is " + mb2.seatHeight);

  • enam, Lagi, referensi dibuat oleh 'mb2' dari tipe Bicycle, maka akan didapati waktu kompilasi error pada statement berikut.

mb2.setHeight(21);

Penggunakan Type Casting pada Java
Pada contoh sebelumnya, telah dilihat bahwa dengan menggunakan referensi 'mb2' dari tipe Bicycle, maka dapat dipanggil method spesifik subclass atau akses field subclass. Permasalahan tersebut dapat diselesaikan menggunakan type casting pada Java. Contohnya, dapat dideklarasikan referensi lain seperti 'mb3' dari tipe MountainBike dan menetapkannya menuju 'mb2' menggunakan typecasting.

/* pendeklarasian referensi MountainBike */
MountainBike mb3;
/* menetapkan mb3 menuju mb2 menggunakan typecasting */
mb3 = (MountainBike)mb2;

Jadi, sekarang statement tersebut sudah bernilai valid.

System.out.println("seat height of second bicycle  is " + mb3.seatHeight);
mb3.setHeight(21);

Waktu Penggunaan Pendekatan Pertama dari Referensi Menggunakan Referensi Superclass
Jika tidak diketahui runtime yang tepat dari object, maka dapat digunakan pendekatan berikut ini: pertimbangkan ArrayList memiliki object yang berbeda pada beberapa indikasi yang juga berbeda. Sekarang ketika dicoba untuk mendapatkan elemen dari arraylist menggunakan method ArrayList.get(int index), maka harus digunakan referensi object, pada kasus ini tidak diketahui tipe runtime dari object

Contoh:

// Java program to illustrate

// referring to a subclass

// using superclass reference

// variable.

import java.util.ArrayList

 

public class Test 

 

public static void main(String args[])

ArrayList al = new ArrayList(2); 

   

// penambahan String object

// untuk al.

al.add(new String("MakanNasiKucing")); 

   

// penambahan Integer object

// untuk al.

al.add(new Integer(5)); 

   

// mendapatkan semua elemen

// menggunakan referensi

// Object.

for (Object object : al) 

{System.out.println(object);}  

}

 

}

Output:
MakanNasiKucing
5

  • Keunggulan: superclass dapat digunakan untuk menahan derived object subclass apapun.
  • Kekurangan: Dengan menggunakan referensi superclass, dapat dimiliki akses hanya ke bagian method dan variabel dari definisi object oleh superclass. Contohnya, tidak dapat mengakses variabel seatHeight atau memanggil method setHeight(int newValue) menggunakan referensi Bicycle dalam contoh sebelumnya. Hal ini dikarenakan contoh tersebut didefinisikan dalam subclass tetapi tidak dideklarasikan pada superclass.

Waktu Penggunaan Pendekatan Kedua Referensi yang Menggunakan Referensi Subclass
Jika diketahui runtime yang pasti dari object, maka pendekatan kedua tersebut dapat digunakan. Penggunaan pendekatan ini juga dapat digunakan untuk memanggil method spesifik object tertentu.

Contoh:

// Program Java

// mengilustrasikan referensi

// menuju sebuah subclass

// menggunakan variabel

// referensi subclass.

import java.util.ArrayList

 

public class Test 

public static void main(String args[]){ 

ArrayList al = new ArrayList(2); 

   

// penambahan String object

// untuk semua.

al.add(new String("SimpanNasiKucing")); 

al.add(new String("buat bekal"

+" nanti")); 

   

   

// mendapatkan elemen

// menggunakan referensi

// String.

String str1 = (String)al.get(0); 

String str2 = (String)al.get(1); 

   

System.out.println(str1); 

System.out.println(str2); 

   

// menggunakan method spesifik

// String class.

System.out.println(str1.length()); 

System.out.println(str2.substring(4,8));} 

}

Output:
MakanNasiKucing
buat bekal nanti
13
bekal

  • Keunggulan: dengan menggunakan referensi subclass, maka dapat diakses kedua bagian method dan variabel dari definisi object oleh superclass atau subclass. Contohnya, dapat dipanggil method setHeight(int newValue) atau method speedUp(int increment) menggunakan referensi MountainBike dalam contoh sebelumnya.
  • Kekurangan: Dapat digunakan referensi subclass hanya untuk menahan object subclass tertentu saja.

Komentar

  1. Apa yang dimaksud dengan referensi pada Java?

    BalasHapus
    Balasan
    1. Referensi adalah alamat yang menunjukkan dimana variabel dan method object disimpan. User tidak benar-benar menggunakan object saat menetapkan object ke variabel atau saat meneruskan object ke method sebagai sebuah argumen. User bahkan tidak bisa menggunakan salinan dari object tersebut pada Java.

      Hapus
  2. Apa perbedaan antara object dan referensi object pada Java?

    BalasHapus
    Balasan
    1. Object dibuat pada area heap, sedangkan object referensi hanya menunjukkan class object pada heap, yaitu hanya menyimpan alamat memori dari object yang dituju pada heap tersebut. Singkatnya, object adalah turunan dari class dan referensi yang menunjukkan object yang dibuat pada area heap pada Java.

      Hapus
  3. Ruang heap atau heap space pada Java digunakan untuk alokasi memori dinamis untuk object pada Java dan class JRE pada saat runtime. Object baru selalu dibuat pada ruang heap dan referensi ke object tersebut disimpan dalam memori stack.

    BalasHapus

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.

POIN 6, Jika ada pihak ketika yang ingin memasang iklan pada blog ini secara langsung, maka dapat menghubungi pemilik blog melalui kontak 0882 3218 8316.



~ Ikatlah Ilmu dengan Memostingkannya ~

Hot Artikel

Perbedaan stdio.h dan stdlib.h pada Bahasa C

Enkapsulasi pada Java

Perbedaan Antara int main() dan int main(void) pada Bahasa C

2 Jenis Utama Kegiatan Penelitian Berdasarkan Waktunya, Crosssectional Salah Satunya