}
Các bi n t m th i
ế ạ
ờ
radius
và
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.
ứ
ươ
ể
ệ ươ
ứ