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

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) {