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

}

Các bi n t m th i

ế ạ

radius

area

có ích cho vi c phát tri n và g l i ch

ng trình, nh ng m t khi

ỡ ỗ

ươ

ư

ch

ng trình đã ho t đ ng t t, ta có th rút g n nó l i b ng cách k t h p các l nh kích ho t ph

ng

ươ

ạ ộ

ạ ằ

ế ợ

ươ

th c:

public static double

circleArea (

double

xc,

double

yc,

double

xp,

double

yp) {

return

area(distance(xc, yc, xp, yp));

}

6.4 Quá t i toán t

Có th b n đã nh n th y r ng c

ể ạ

ấ ằ

ả circleArea l n

ẫ area đ u th c hi n nh ng tính năng t ng t —tìm di n

ươ

tích hình tròn—nh ng nh n các tham s khác nhau. V i

ư

ớ area, chúng ta ph i cung c p bán kính; còn

v i

ớ circleArea ta cung c p hai đi m.

N u hai ph

ng th c cùng làm m t vi c, l t nhiên là ta đ t chung m t tên cho c hai. Vi c có nhi u

ế

ươ

ệ ẽ ự

ph

ng th c cùng tên, v n đ

c g i là

ươ

ượ ọ

quá t i

(overloading), là đi u h p l trong Java

ợ ệ

mi n sao các

d ng ph ng th c ph i nh n nh ng tham s khác nhau

ươ

. Nh v y ta có th đ i tên

ư ậ

ể ổ

circleArea:

public static double

area (

double

x1,

double

y1,

double

x2,

double

y2) {

return

area(distance(xc, yc, xp, yp));

}

Khi b n kích ho t m t ph

ng th c quá t i, Java s bi t đ

c r ng b n mu n dùng d ng ph

ng th c

ươ

ẽ ế ượ ằ

ươ

nào, qua vi c xem xét các đ i s mà b n cung c p. N u b n vi t:

ố ố

ế

ế

double

x = area(3.0);

thì Java s đi tìm m t ph

ng th c mang tên

ươ

area mà nh n đ i s là m t

ố ố

ộ double; do đó nó s dùng

d ng th nh t, t c là hi u đ i s nh m t bán kính. Còn n u b n vi t:

ấ ứ

ố ố

ư ộ

ế

ế

double

x = area(1.0, 2.0, 4.0, 6.0);

thì Java s dùng d ng th hai c a

ủ area. Và l u ý r ng th c ra d ng

ư

ạ area th hai đã kích ho t d ng th

ạ ạ

nh t.

Nhi u ph

ng th c Java đ

c qua t i, nghĩa là có nhi u d ng trong đó ch p nh n s l

ng ho c ki u

ươ

ượ

ậ ố ượ

tham s khác nhau. Ch ng h n, có nh ng d ng

ạ print và println ch p nh n m t tham s thu c ki u b t

kì. Trong l p Math, có m t d ng

ộ ạ abs làm vi c v i

ệ ớ double, đ ng th i có m t d ng dành cho

ộ ạ

int.

M c dù quá t i là m t đ c đi m h u ích, so b n hãy c n th n khi dùng. B n có th th t s c m th y lú

ộ ặ

ể ậ ự ả

l n n u c g ng g l i m t d ng ph

ng th c trong khi b n không ch ý kích ho t nó, mà là m t

ế ố ắ

ỡ ỗ

ộ ạ

ươ

ph

ng th c khác cùng tên!

ươ

Và đi u này làm tôi nh đ n m t quy t c then ch t trong g l i:

ớ ế

ỡ ỗ hãy đ m b o ch c r ng phiên b n

ch

ng trình b n c n g l i chính là phiên b n ch

ng trình b n đang ch y!

ươ

ỡ ỗ

ươ

M t ngày nào đó có th b n s th y mình đang loay hoay s a đi s a l i ch

ng trình, và c th y k t qu

ể ạ ẽ ấ

ử ạ

ươ

ứ ấ ế

v n y nguyên nh v y khi ch y l i. Đây là m t tín hi u c nh báo r ng hi n b n không ch y phiên b n

ư ậ

ạ ạ

ệ ả

ch

ng trình nh đang nghĩ. Đ ki m tra l i, b n hãy th thêm m t câu l nh

ươ

ư

ể ể

ệ print (ch ng quan tr ng là

in th gì) và xem ch

ng trình có bi u hi n t

ng ng hay không.

ươ

ệ ươ