Lompat ke konten Lompat ke sidebar Lompat ke footer

Object Subclass dan Subclass Java dan Referensi Superclass

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.


Sebelum lebih lanjut mempelajari materi tentang Object Subclass dan Subclass Java dan Referensi Superclass, terlebih dahulu pelajari materi tentang: Method Class Derived Java dan Fungsinya, Parent dan Child Class Java Dengan Anggota Data Sama, dan Object Serialisasi Java Terhadap Inheritance.

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.
  • 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.
  • Pendekatan kedua (referensi menggunakan referensi dari subclass): Sebuah referensi subclass dapat digunakan untuk menghubungkan object-nya sendiri.

Contoh: Perhatikan penjelasan kedua 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);

Gambar 1 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);

Gambar 2 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);

Baca Juga:

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.

Referensi Tambahan:

Artikel ini didedikasikan kepada: Herawati Mega, Ilham Bashairil Alam, Indah Nur Hastuti, Jacqualine Dwinaya Putri Jadmiko, dan Lailati Nur Amalina.

5 komentar untuk "Object Subclass dan Subclass Java dan Referensi Superclass"

  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

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 -