THINK JAVA: CÁCH SUY NGHĨ NHƯ NHÀ KHOA HỌC MÁY TÍNH - Trang 140

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:

ươ

ứ ể ể

ự ươ