Sau đây là nh ng thay đ i:
ữ
ổ
1.
Tôi đã xóa t
ừ static.
2.Tôi thay đ i tên c a ph
ng th c đ gi ng v i gi ng đ c Java h n.
ổ
ủ
ươ
ứ ể ố
ớ
ọ
ọ
ơ
3.Tôi b tham s đi.
ỏ
ố
4.
Bên trong m t ph
ng th c đ i t
ng, b n có th tham chi u đ n các bi n th c th nh th chúng là
ộ
ươ
ứ ố ượ
ạ
ể
ế
ế
ế
ự
ể
ư ể
nh ng bi n đ a ph
ng, vì v y tôi đ i
ữ
ế
ị
ươ
ậ
ổ c.rank thành rank, và t ng t v i
ươ
ự ớ suit.
Đây là cách kích ho t ph
ng th c m i này:
ạ
ươ
ứ
ớ
Card card =
new
Card(1, 1);
card.print();
Khi b n kích ho t m t ph
ng th c lên m t đ i t
ng thì đ i t
ng đó tr thành
ạ
ạ
ộ
ươ
ứ
ộ ố ượ
ố ượ
ở
đ i t
ng hi n
ố ượ
ệ
hành, còn đ
c g i là
ượ ọ
this. Bên trong print, t khóa
ừ
this tham chi u đ n lá bài mà ph
ng th c đ
c
ế
ế
ươ
ứ ượ
kích ho t lên đó.
ạ
15.3 Ph
ng th c
ươ
ứ toString
T ng ki u đ i t
ng đ u có m t ph
ng th c mang tên
ừ
ể
ố ượ
ề
ộ
ươ
ứ
toString đ tr l i m t chu i bi u di n cho đ i
ể ả ạ
ộ
ỗ
ể
ễ
ố
t
ng đó. Khi b n in ra đ i t
ng b ng l nh
ượ
ạ
ố ượ
ằ
ệ print ho c
ặ println, Java s kích ho t ph ng
ẽ
ạ
ươ
th c
ứ toString c a đ i t ng này.
ủ
ố ượ
Phiên b n m c đ nh c a
ả
ặ ị
ủ toString tr l i m t chu i có ch a ki u c a đ i t ng và m t s nh n di n duy
ả ạ
ộ
ỗ
ứ
ể ủ
ố ượ
ộ ố
ậ
ệ
nh t (xem M c
ấ
ụ 11.6). Khi b n đ nh nghĩa m t ki u đ i t ng m i, b n có th
ạ
ị
ộ
ể
ố ượ
ớ
ạ
ể s a đè
ử
lên hành vi m c
ặ
đ nh này b ng cách cung c p m t ph
ng th c m i ch a hành vi mà b n mu n.
ị
ằ
ấ
ộ
ươ
ứ
ớ
ứ
ạ
ố
Ch ng h n, sau đây là m t ph
ng th c
ẳ
ạ
ộ
ươ
ứ toString đ i v i
ố ớ Card:
public
String toString() {
return
ranks[rank] +
" of "
+ suits[suit];
}
Ki u tr l i là
ể
ả ạ
String, theo l t nhiên; và ph
ng th c này không nh n tham s nào. B n có th kích
ẽ ự
ươ
ứ
ậ
ố
ạ
ể
ho t
ạ toString theo l i thông th ng:
ố
ườ
Card card =
new
Card(1, 1);
String s = card.toString();
ho c b n cũng có th kích ho t gián ti p nó thông qua
ặ ạ
ể
ạ
ế
println:
System.out.println(card);
15.4 Ph
ng th c
ươ
ứ equals
M c
Ở ụ 13.4 ta đã nói v hai hình th c cân b ng: s gi ng h , nghĩa là hai bi n cùng tham chi u t i m t
ề
ứ
ằ
ự ố
ệ
ế
ế ớ
ộ
đ i t
ng, và s t
ng đ
ng, t c là hai bi n có cùng giá tr .
ố ượ
ự ươ
ươ
ứ
ế
ị
Toán t
ử == ki m tra s gi ng h t, nh ng không có toán t nào đ ki m tra s t ng đ ng, b i “t ng
ể
ự ố
ệ
ư
ử
ể ể
ự ươ
ồ
ở ươ
đ ng” th nào thì còn ph thu c vào ki u c a đ i t
ng n a. Thay vì v y, các đ i t
ng l i cung c p
ồ
ế
ụ
ộ
ể ủ
ố ượ
ữ
ậ
ố ượ
ạ
ấ
m t ph
ng th c có tên
ộ
ươ
ứ
equals đ đ nh nghĩa s t
ng đ ng này.
ể ị
ự ươ
ồ
Các l p trong Java cung c p nh ng ph
ng th c
ớ
ấ
ữ
ươ
ứ equals đ làm đi u đúng đ n. Nh ng v i nh ng ki u
ể
ề
ắ
ư
ớ
ữ
ể
do ng
i dùng đ nh nghĩa thì cách ng x m c đ nh c a ph
ng th c này cũng ch ng khác gì s gi ng
ườ
ị
ứ
ử ặ ị
ủ
ươ
ứ
ẳ
ự ố
h t; đây không ph i là đi u b n mong mu n.
ệ
ả
ề
ạ
ố
Đ i v i
ố ớ Card ta đã có m t ph ng th c đ ki m tra s t ng đ ng:
ộ
ươ
ứ ể ể
ự ươ
ồ