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

public static boolean

sameCard(Card c1, Card c2) {

return

(c1.suit == c2.suit && c1.rank == c2.rank);

}

B i v y t t c nh ng đi u ta c n làm là vi t l i nó d

i d ng m t ph

ng th c cho đ i t

ng:

ở ậ ấ ả

ế ạ

ướ ạ

ươ

ố ượ

public boolean

equals(Card c2) {

return

(suit == c2.suit && rank == c2.rank);

}

M t l n n a, tôi đã b đi t khóa

ộ ầ

static cũng nh thông s đ u,

ư

ố ầ c1. Sau đây là cách kích ho t ph ng

ươ

th c m i này:

Card card =

new

Card(1, 1);

Card card2 =

new

Card(1, 1);

System.out.println(card.equals(card2));

Bên trong equals, card là đ i t

ng hi n hành còn

ố ượ

card2 là tham s ,

ố c2. Đ i v i nh ng ph ng th c

ố ớ

ươ

ho t đ ng trên hai đ i t

ng có cùng ki u, đôi khi tôi dùng h n t khóa

ạ ộ

ố ượ

ẳ ừ

this đ ng th i g i tham s kia

ờ ọ

là that:

public boolean

equals(Card that) {

return

(

this

.suit == that.suit &&

this

.rank == that.rank);

}

Tôi nghĩ r ng theo cách này, mã l nh s d đ c h n.

ẽ ễ ọ ơ

15.5 Nh ng đi u kì qu c và l i sai

N u b n có các ph

ng th c đ i t

ng và l p đ i t

ng bên trong cùng m t l p, thì th t d nh m l n.

ế

ươ

ứ ố ượ

ố ượ

ộ ớ

ậ ễ

M t cách thông th

ng đ t ch c l i đ nh nghĩa l p là đ t t t c nh ng constructor đ u, theo sau là

ườ

ể ổ ứ ờ ị

ặ ấ ả

ở ầ

t t c nh ng ph

ng th c đ i t

ng và ti p theo là ph

ng th c l p.

ấ ả

ươ

ứ ố ượ

ế

ươ

ứ ớ

B n có th có m t ph

ng th c đ i t

ng trùng tên v i ph

ng th c l p, mi n là chúng không có cùng

ươ

ứ ố ượ

ươ

ứ ớ

s l

ng cũng nh ki u các tham s . Gi ng các hình th c quá t i (overloading) khác, Java quy t đ nh

ố ượ

ư ể

ế ị

xem c n kích ho t d ng nào b ng cách nhìn vào nh ng tham s mà b n cung c p.

ạ ạ

Bây gi khi đã bi t ý nghĩa c a t khóa

ế

ủ ừ

static, có l b n đã hình dung ra đ

c r ng

ẽ ạ

ượ ằ main là m t ph ng

ươ

th c l p, nghĩa là không có m t “đ i t

ng hi n th i” n i nó đ

c kích ho t.

ứ ớ

ố ượ

ơ

ượ

ạ Vì không có đ i t ng

ố ượ

hi n th i trong m t ph

ng th c l p, nên s có l i khi dùng t khóa

ươ

ứ ớ

this. N u b n th thì s nh n đ

c

ế

ượ

m t thông báo l i ki u nh “Undefined variable: this.”

ư

Đ ng th i, b n cũng không th tham chi u đ n nh ng bi n th c th mà không dùng kí pháp d u ch m

ế

ế

ế

l n cung c p m t tên đ i t

ng. N u th làm, b n s nh n m t thông báo l i nh “non-static variable…

ố ượ

ế

ạ ẽ

ư

cannot be referenced from a static context.” Nói “non-static variable” nghĩa là bi n th c th (“instance

ế

variable.”)

15.6 Th a k

ế

Đ c đi m ngôn ng th

ng g n v i l p trình h

ng đ i t

ng nh t là tính

ữ ườ

ớ ậ

ướ

ố ượ

th a k

ế. Th a k là kh

ừ ế

năng đ nh nghĩa đ

c m t l p m i là phiên b n s a đ i t m t l p s n có. M r ng hình nh ví von

ượ

ộ ớ

ả ử

ổ ừ ộ ớ ẵ

ở ộ

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.