Di Java,
setiap kelas yang telah di deklarasikan tanpa sebuah explicit extends clause akan secara otomatis extends the class object. Class
object mendefinisikan beberapa general
method, yaitu:
·
toString,
yang menghasilkan string yang menjelaskan objek.
·
equal, yang membandingkan objek dengan satu
sama lain.
·
hashCode, yang menghasilkan kode numerik untuk
menyimpan objek dalam satu set.
9.5.1 Overriding the toString Method
toString method disebut otomatis kapanpun anda
menggabungkan sebuah string dengan sebuah objek. Misalkan:
“box=” +
box;
On one side of the + concatenation
operator is a string, but on the other side is an object reference.
Bilangan juga
di konversi ke strings ketika di gabungkan dengan string lain. Misalkan:
int umur =
18;
String s =
"Umur Hari adalah " + age;
Let’s try the toString method for the
BankAccount class:
BankAccount
momsSavings = new BankAccount(5000);
String s =
momsSavings.toString();
// Sets s to
something like "BankAccount@d24606bf"
Hashcode
dapat diguaan untuk mengatakan suatu objects
apart- different objects seperti memiliki hashcode yang berbeda.
Kita harus
mengoverride method dan tetap mendukung versi sebelumnya di BankAccount class.
public class
BankAccount{
. . .
public
String toString(){
return
"BankAccount[balance=" + balance + "]";
}
}
This works
better:
BankAccount
momsSavings = new BankAccount(5000);
String s =
momsSavings.toString(); // Sets s to "BankAccount[balance=5000]"
Override
toSting method untuk menghasilkan string yang menjelaskan object’s state.
9.5.2 The equals Method
The object class juga mendukung equals method, yang menyatakan bahwa dua objek memiliki content yang sama:
if
(stamp1.equals(stamp2)) . . .
// Contents
are the same
Hal ini
berbeda dengan operator ==, yang menyatakan bahwa dua objek adalah identik:
if (stamp1
== stamp2) . . .
// Objects
are the same
9.5.3 The instanceof Operator
Diperbolehkan
menyimpan subclass reference dalam variable superclass:
ChoiceQuestion
cq = new ChoiceQuestion();
Question q =
cq; // OK
Object obj =
cq; // OK
Misalkan ada
variable bertipe objek dan dia memegang Question refence. Dala hal ini kita
dapat menggunakan cast untuk mengkonvertnya:
Question q =
(Question) obj;
Namun ini
agak berbahaya jika salah, dan obj sebenarnya mengacu ke sebuah objek dari
jenis yang tidak berhubungan, maka "class cast" exception is thrown.
Untuk menghindarinya,
dapat menggunakan instanceof operator yang digunakan untuk mengetes bahwa
sebuah objek milik jenis tertentu. Misal:
Obj instanceof
Question;
Akan mengembalikan
nilai true jika tipe obj adalah konversi ke Question.
Dengan menggunakan
instanceof operator, cast yang aman dapat dibuat:
if (obj instanceof
Question){
Question q =
(Question) obj;
}
Instanceof itu
bukan sebuah method, dia adalah operator biasa seperti halnya + atau <. Tetapi
instanceof tidak mengoperasikan pada bilangan.
Sumber:
Horstmann, Coy. Fifth Edition. Big Java Early Objects.