PEMROGRAMAN BERORIENTASI OBJEK
183 | P a g e
16. Kegiatan Belajar 18 : Polimorphisme
Casting Objek dan InstanceOf
a.  Tujuan Pembelajaran
Setelah mengikuti kegiatan belajar 16 siswa diharapkan dapat : 1  Memahami konsep polimorfisme
2  Menyajikan overloading dan overriding dalam class
b.  Uraian Materi
Anda  telah  menggunakan  operator  casting  untuk  mengubah  variabel-variabel suatu tipe primitif menjadi tipe primitif yang lain.
Casting dapat pula digunakan untuk mengubah objek dengan suatu tipe kelas menjadi objek degan tipe kelas
lain, di dalam suatu hirarki pewarisan. Pada bagian sebelumnya , statemen mnew Mahasiswa    ;
menugaskan objek
new Mahasiswa kepada suatu parameter bertipe Object. Statement tersebut ekuivalen dengan
object o = new Mahasiswa;  Casting implisit
mo;
Statement Object  o  =  new  Mahasiswa,  dikenal  sebagai  casting  implisit,
merupakan  hal  yang  sah  karena  suatu  instans Mahasiswa  secara  otomatis
adalah suatu instans Object.
Seandainya  anda  ingin  menugaskan  referensi  objek o  kepada  suatu  variabel
bertipe Mahasiswa menggunakan statemen berikut ini:
Mahasiswa b = o; Pada  kasus  ini,  error  kompilasi  terjadi.  Mengapa  statemen
Object  o  =  new Mahasiswa  dapat  dilakukan  sementara  Mahasiswa  b  =  o    tidak  bisa
dilakukan ? Alasanya adalah bahwa suatu objek Mahasiswa selalu merupakan
suatu instans Object, tetapi suatu instans Object belum tentu merupakan suatu
instans Mahasiswa. Meskipun anda dapat melihat bahwa o adalah suatu objek
Mahasiswa,  kompiler  tidak  cukup    pintar  untuk  mengetahuinya.  Untuk
PEMROGRAMAN BERORIENTASI OBJEK
184 | P a g e
memberitahu kompiler bahwa o merupakan suatu objek  Mahasiswa , gunakan
casting  ekspilit.  Sintaks  yang  digunakan  sama  seperti  yang  digunakan  untuk meng-casting  tipe  primitif,  tipe  objek  target  diapit  oleh  sepasang  kurung  dan
ditempatkan sebelum objek yang akan dicast: Mahasiswa b = Mahasiswa o;  Casting eksplisit
Adalah  hal  yang  selalu  memungkinkan  untuk  melakukan casting  terhadap
instans  dari  suatu  subkelas  menjadi  suatu  variabel  superkelas  yang  dikenal dengan
upcasting,  karena  instans  subkelas  selalu  merupakan  instans superkelas.  Ketika  melakukan  casting  terhadap  instans  dari  suatu  superkelas
menjadi  suatu  variabel  subkelasnya  yang  dikenal  dengan downcasting,
casting  eksplisit  harus  digunakan  untuk  mengaskan  tujuan  anda  kepada kompiler.
Agar  casting  berhasil  dilakukan  ,  Anda  perlu  memastikan  bahwa  objek  yang akan  di-cast  merupakan  suatu  instans  subkelas.  Jika  objek  superkelas  bukan
merupakan  suatu  instans  subkelas.,  error ClassCastException  akan  terjadi.
Sebagai  contoh,  jika  suatu  objek  bukan  instans  dari Mahasiswa,  maka  objek
tersebut  tidak  bisa  di-cast  menjadi  suatu  variabel Mahasiswa.  Hal  ini  bisa
diselesaikan dengan penggunaan operator instance of Listing Program
public class DemoCasting { Main method
public static void mainString[] args { Menciptakan dan menginisialisasi dua objek
Object objek1 = new Lingkaran41; Object objek2 = new PersegiPanjang11, 1;
Menampilkan lingkaran dan persegi-panjang tampilObjekobjek1;
tampilObjekobjek2; }
Metode untuk menampilkan suatu objek public static void tampilObjekObject objek{
ifobjek instanceof Lingkaran4 { System.out.printlnLuas lingkaran adalah  +