Belajar Mengenal Upcasting Dan Downcasting Objek Di Kegiatan Java

Pada artikel mencar ilmu java sebelumnya , saya pernah membahas tentang  Type Casting dalam Coding Java, yang dimana kita sanggup mengkonversikan tipe data numerik (ex : integer,long dll) , dari tipe data kecil ke tipe data besar ,yang disebut Widening Conversion (Implicit Casting),dan juga dari tipe data besar ke tipe data kecil ,yang disebut Narrow Conversion (Explicit Casting ).
Nah , bedanya pada artikel mencar ilmu java kali ini , kita akan mencoba mengenal casting pada objek , yang terdiri dari 2 jenis ,yaitu Upcasting dan Downcasting , dari kekerabatan parent-child class ,yang terkait dengan konsep Inheritance(Pewarisan) dan juga Polymorphism. Selengkapnya ,berikut mari kita simak lebih lanjut :
 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java

1. Pertama buka IntelliJ IDEA ,atau Software IDE lain yang kalian gunakan , di Komputer atau Laptop kalian.
2.  Sebelumnya , kalian sanggup tulis pola code berikut :

 Contoh Code:

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Contoh Code

Penjelasan :

Pada pola code agenda di atas ,sebagai pola kita menciptakan class Binatang ,yang termasuk (Super Class/Parent Class).

Selanjutnya ,kita menciptakan class Anjing ,yang termasuk (Sub Class/Class Turunan) dari class Binatang.

Di dalam class Binatang ,kita mendefinisikan statement , pada method .makan()

Di dalam class Anjing ,kita mendefinisikan statement , pada method .makan() ,yang berasal dari (extends) class Binatang, dan juga method .suaraAnjing().

Setelah itu kita akan fokus pada beberapa baris code , pada pola agenda di atas.

Pertama kalian perhatikan pola code berikut :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Contoh Code

Penjelasan :

Setelah itu pada method main utama , di dalam class MainClass, kita mencoba menjalankan atau mengeksekusi program.

Pertama kita menciptakan objek dari class Binatang,dengan nama binatang1 , dan juga class Anjing ,dengan nama anjing1.

Selanjutnya ,kita panggil semua method dari masing-masing objek ,outputnya akan tampil mirip pada gambar di bawah:

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Output Hasil

Berikut klarifikasi upcasting dan downcasting  di Java :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Contoh hirarki pewarisan dari class Binatang(Super Class) ,  Kucing(Sub Class) ,dan Anjing (Sub Class)


Apa itu Upcasting ? 

Upcasting yaitu salah satu cara untuk casting atau mengkonversi objek  ,dari tipe Sub class atau Class Turunan , ke tipe Super Class atau Class Parent (ke arah atas pada hirarki pewarisan).

Sekarang kita fokus pada pola code berikut :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Contoh Code 

Penjelasan :

Pada pola code di atas ,kita memakai binatang2 , yang merupakan variable tumpuan ,yang menyimpan nilai dari objek anjing1.

Inilah yang disebut sebagai Upcasting , dimana kita melaksanakan casting(konversi) objek dari tipe Sub class , ke tipe Super Class.

Sehingga  , kita sanggup memakai variable referensi binatang2 , untuk memanggil method .makan() , yang akan menampilkan output hasil mirip pada gambar berikut :

Output :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Output Hasil

Pada komentar yang berisi : // akan error kalau memakai binatang2.suaraAnjing();

Maksudnya yaitu ketika  mencoba memanggil method .suaraAnjing() ,  dengan variable tumpuan binatang2 ,akan menjadikan error pada compiler.

Ini dikarenakan  method .suaraAnjing()  , tidak terkait dengan konsep inheritance(Pewarisan) , yang berarti di dalam class Binatang ,hanya tersedia method .makan() saja.

Catatan :

Sebenarnya var binatang2 ,  dapat memanggil method .suaraAnjing() . Asalkan codenya menjadi mirip ini : ((Anjing)binatang2).suaraAnjing();

Pada pola code di atas , kita juga sanggup menggantinya dengan pola code di bawah :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Contoh Code

Ouput jadinya akan tetap sama mirip pada gambar di atas.

Sebenarnya ,code pada baris code pertama :

 Binatang binatang2 = (Binatang) new Anjing();

Namun , alasannya yaitu proses upcasting , dilakukan secara otomatis ,pada bahasa pemrograman Java. Makara kita tidak perlu eksplisit , menambahkan (Binatang) , alasannya yaitu akan terdeteksi redundant (pengulangan code ) pada compiler.

Point :


Upcasting  : Konversi ke Tipe Super Class / ke atas hirarki pewarisan

Apa itu Downcasting ? 

Sebaliknya downcasting yaitu salah satu cara untuk casting atau mengkonversi objek  ,dari tipe Super Class atau Class Parent,   ke tipe Sub class atau Class Turunan  (ke arah bawah pada hirarki pewarisan).

Sekarang kita fokus pada pola code berikut :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Contoh Code

Penjelasan :

Berbeda dengan upcasting ,yang dilakukan secara otomatis. Pada pola code di atas , kita melaksanakan downcasting secara manual , dan kita perlu secara eksplisit , menambahkan (Anjing) , pada baris code ,saat kita memakai variable tumpuan anjing2.

Selanjutnya , kita panggil method .makan() dan suaraAnjing().

Setelah itu kita tampilkan output jadinya , akan mirip pada gambar di bawah:

Output :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Output Hasil

Point :


Downcasting  : Konversi ke Tipe Sub Class / ke bawah hirarki pewarisan

Ingat : 
Berbeda dengan tipe data primitif khususnya numerik ,yang akan berubah sehabis dikonversi. Perlu di catat bahwa ,nilai dari tipe objek sebenarnya  ,tidak akan berubah ,saat kita casting objek. Makara hanya tipe referensinya saja yang berubah.

Referensi mirip sebuah remote control ,yang mengendalikan dari jarak jauh. Remote control memiliki lebih sedikit,atau lebih banyak tombol tergantung tipenya sendiri, dan juga objek yang disimpan di memory heap. Ketika kita melaksanakan casting , kita hanya mengubah tipe remote control , bukan mengubah objek itu sendiri.

Kenapa terjadi Error  ClassCastException ?

Sekarang kita lanjut fokus , pada pola code pertama berikut :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Contoh Code 

Maka pola code di atas akan menampilkan output ,seperti pada gambar di bawah:

Output :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Output Hasil

Penjelasan :

Pada pola code pertama di atas , akan menjadikan Error ClassCastException  , ketika kita mencoba melaksanakan casting instansi tipe objek , yang tidak kompatibel. Ini termasuk salah satu Runtime Error ,yang dimana terjadi ketika agenda di jalankan.

Makara maksudnya disini , untuk casting objek  hanya bekerja , ketika memenuhi syarat Relasi IS-A. Jika tidak ,maka Error  ClassCastException akan terjadi.

Sekarang kita balik , menjadi seperti  pola code kedua berikut :

 yang dimana kita sanggup mengkonversikan tipe data numerik  Belajar Mengenal Upcasting dan Downcasting Objek di Program Java
Contoh Code

Pada pola code kedua di atas. Ketika dijalankan , akan menampilkan output : Anjing makan tulang.., mirip output pada proses upcasting ,yang sudah saya jelaskan sebelumnya.

Jadi  casting sanggup dilakukan ,ketika Anjing yaitu IS-A dari Binatang. Bukan Binatang IS-A dari Anjing. Seperti pada pola code pertama ,yang akan menampilkan (throw) pesan error ketika agenda dijalankan.

Contoh sederhana  di dunia nyatanya begini. Kalian punya jeruk , nah jeruk itu sudah niscaya buah, sebaliknya buah itu tidak selalu jeruk. Bisa apel , rambutan , pisang dan lain sebagainya.

Atau kalian sanggup baca selengkapnya wacana :  Belajar Mengenal Relasi IS-A dan HAS-A di Program Java

Point :

Casting objek di java :

  • Memenuhi syarat IS-A
  • Terkait konsep inheritance (pewarisan)
  • Upcasting otomatis 
  • Downcasting manual
  • Upcasting ke atas 
  • Downcasting ke bawah

Baca sebelumnya :  Belajar Mengenal Contoh Class dan Object di Program Java

Loading...