Kamis, 27 Februari 2014

Casting Obyek


Instances  dari  class-class  juga  dapat  di  ubah ke  instance-instance  dari  class-class  yang  lain dengan  satu  batasan:  class-class  sumber dan tujuan harus  terhubung dengan  mekanisme  inheritance;  satu  class  harus  menjadi  sebuah  subclass terhadap  class yang  lain. 
Sejalan  dengan  konversi nilai primitif ke tipe yang lebih  besar  ukurannya,beberapa object  mungkin  tidak  membutuhkan  untuk ubah  secara  explisit.  Faktanya karena  semua subclass terdiri  atas informasi yang sama seperti class induknya. Sebagai contoh, jika terdapat method yang memiliki dua argumen, satu tipe object dan tipe window   yang lain.Anda dapat  melewatkan instance  dari  class  a p a p u n  untuk  argumen object  karena semua  class java adalah subclass dari object. Untuk argumen  window, anda dapat  melewatkannya   subclassnya,   seperti dialog, FileDialog, dan  frame.  Hal  ini dapat  dituliskan  dalam  program  dan  bukan  hanya dalam memanggil  method. Jika  andamempunyai  variabel  yang  didefinisikan  sebagai  class  window,  anda  dapat  memberikan obyek dari class tersebut atau dari subclassnya untuk dijadikan variabel tanpa konversi. 







Untuk  kebalikannya  pun  bisa  dilakukan,  Anda  dapat  menggunakan  superclass  ketika sebuah    subclass    dibentuk.    Akan  tetapi  error  akan  ditemukan  karena  subclass kemungkinan  memiliki  lebih  banyak  tingkah  laku  daripada  superclassnya,  maka mungkin akan terjadi hilangjya kendali dari superclass untuk method tertentu. superclass object mungkin  tidak  memiliki  semua  kemungkinan  tingkah  laku  yang  dapat  dilakukan  subclass object.  Sebagai  contoh  jika  anda  memiliki  operasi  yang  memanggil  method  dalam  obyek dari  class integer, mengunakan  object  dari class  Number tidak  akan didapatkan method lebih banyak dari yang  dispesifikasikan  dalam  integer.  Error  akan  terjadi  jika  Anda mencoba untuk memanggil method yang tidak dimiliki oleh obyek tujuan. Untuk  mengunakan obyek-obyek superclass dimana    obyek-obyek  subclass  ditentukan  terlebih  dahulu,anda harus mengkonversi  mereka secara eksplisit. Anda tidak  akan kehilangan  informasi sebelumnya  setelah  proses  konversi, tapi anda  mendapatkan semua method danvariabel  yang didefinisikan oleh  subclass. Untuk konversi sebuah obyek ke class yang  lain, Anda dapat menggunakan operasi yang sama seperti konversi untuk tipe-tipe primitif :
Untuk memilih,


(classname)object
dimana,
classname, adalah nama dari class tujuan.
object, adalah sesuatu yang mengarah pada obyek sumber.



 


Contoh berikut konversi  sebuah instance dari class VicePresident ke sebuah  instance dari class Employee;  VicePresident  adalah sebuah subclass  dari Employee dengan lebih  banyak  informasi,  disini didefinisikan  bahwa VicePresident memiliki akses menuju executive washroom,
Employee emp = new Employee();
VicePresident veep = new VicePresident();
emp = veep; // tidak adah konversi yang diperlukan untuk penggunaan
yang cenderung naik
veep = (VicePresident)emp; // Harus memilih dengan pemilihan secara eksplisit

Salah  satu  contoh  untuk  aturan  ini  adalah  operator  untuk  persamaan  :  ==  (sama  dengan) dan  !=  (tidak  samadengan),  ketika  operator  ini  dimasukkan  ke  sebuah  obyek,  operator  ini tidak  akan  melakukan  apa  yang  sebenarnya  diinginkan.    Penggunaan  operator  ini  akan memeriksa kesamaan antara satu obyek ke obyek lain, bukan nilainya. Untuk  membandingkan  instance  dari  sebuah,  Anda  harus  mengimplementasikan  method khusus dalam class anda dan memanggil method tersebut. Sebuah contoh yang baik untuk ini adalah class String. Sangat  mungkin  memiliki  dua  object  String  yang  memiliki  nilai  yang  sama.  Namun,  jika Anda  menggunakan  operator  == untuk membandingkan  obyek ini,  kedua  obyek tersebut akan menghasilkan  hasil  yang  tidak  sama.  Walaupun  isinya  ternyata  sama  akan  tetapi  pada
kenyataannya mereka bukan merupakan obyek yang sama. Untuk melihat  jika  dua  object  String  memiliki nilai yang  sama, sebuah  method  dari  class yaitu  equals()  digunakan.  Method  ini  akan  memeriksa  setiap  karakter  dalam  string  dan mengembalikan nilai true jika dua obyek string memiliki nilai yang sama.
    
Contoh Source Codennya

class EqualsTest {
public static void main(String[] arguments) {
String str1, str2;
str1 = "Free the bound periodicals.";
str2 = str1;
System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
str2 = new String(str1);
System.out.println("String1: " + str1);
System.out.println("String2: " + str2);
System.out.println("Same object? " + (str1 == str2));
System.out.println("Same value? " + str1.equals(str2));
}
}

Hasilnya
Sumber : JENI ( Java Education Network Indonesia )

Tidak ada komentar:

Posting Komentar