11.4 Thêm các constructor
Constructor có th đ
c ch ng ch t [xem thêm ph n "Quá t i"], cũng nh các ph
ng th c khác, theo
ể ượ
ồ
ấ
ầ
ả
ư
ươ
ứ
nghĩa b n có th có nhi u constructor v i các tham s khác nhau. Java bi t rõ c n ph i kích ho t
ạ
ể
ề
ớ
ố
ế
ầ
ả
ạ
constructor nào b ng cách kh p nh ng tham s c a
ằ
ớ
ữ
ố ủ new v i các tham s c a constructor.
ớ
ố ủ
Vi c có constructor không nh n đ i s (nh trên) là hoàn toàn bình th
ng, cũng nh constructor nh n
ệ
ậ
ố ố
ư
ườ
ư
ậ
m t danh sách tham s gi ng h t v i danh sách các bi n th c th . Ch ng h n:
ộ
ố ố
ệ ớ
ế
ự
ể
ẳ
ạ
public
Time(
int
hour,
int
minute,
double
second) {
this
.hour = hour;
this
.minute = minute;
this
.second = second;
}
Các tên và ki u c a nh ng tham s cũng gi ng v i tên và ki u c a các bi n th c th . T t c nh ng gì mà
ể ủ
ữ
ố
ố
ớ
ể ủ
ế
ự
ể ấ ả
ữ
constructor này làm ch là sao chép thông tin t các tham s sang các bi n th c th .
ỉ
ừ
ố
ế
ự
ể
N u xem tài li u v
ế
ệ
ề Point và Rectangle, b n s th y r ng c hai l p này đ u có nh ng constructor ki u
ạ ẽ ấ ằ
ả
ớ
ề
ữ
ể
nh trên. Vi c ch ng ch t constructor cho phép linh ho t t o nên đ i t
ng tr
c r i sau đó m i đi n
ư
ệ
ồ
ấ
ạ ạ
ố ượ
ướ ồ
ớ
ề
vào ph n tr ng, ho c đ thu th p toàn b thông tin tr
c khi l p ra đ i t
ng.
ầ
ố
ặ ể
ậ
ộ
ướ
ậ
ố ượ
Đi u này nghe thì có v không đáng quan tâm, song th c ra thì khác. Vi c vi t nh ng constructor là quá
ề
ẻ
ự
ệ
ế
ữ
trình máy móc, bu n t . M t khi b n đã vi t đ
c hai constructor r i, b n s th y r ng mình có th vi t
ồ ẻ
ộ
ạ
ế ượ
ồ
ạ ẽ ấ ằ
ể ế
chúng nhanh chóng ch qua vi c trông vào danh sách các bi n th c th .
ỉ
ệ
ế
ự
ể
11.5 T o nên đ i t
ng m i
ạ
ố ượ
ớ
M c dù trông gi ng nh ph
ng th c, song constructor không bao gi đ
c kích ho t tr c ti p. Thay vì
ặ
ố
ư
ươ
ứ
ờ ượ
ạ
ự
ế
v y, khi b n kích ho t
ậ
ạ
ạ new, h th ng s huy đ ng dung l ng b nh cho đ i t ng m i và kích ho t
ệ ố
ẽ
ộ
ượ
ộ
ớ
ố ượ
ớ
ạ
constructor này.
Ch
ng trình sau gi i thi u hai cách làm đ l p thành và kh i t o các đ i t
ng
ươ
ớ
ệ
ể ậ
ở ạ
ố ượ Time:
class
Time {
int
hour, minute;
double
second;
public
Time() {
this
.hour = 0;
this
.minute = 0;
this
.second = 0.0;
}
public
Time(
int
hour,
int
minute,
double
second) {
this
.hour = hour;
this
.minute = minute;
this
.second = second;
}
public static void
main(String[] args) {