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

Ch

ng 11: T t o nên nh ng đ i t

ng

ươ

ự ạ

ố ượ riêng

Tr v

ở ề M c l c

ụ ụ cu n sách

11.1 L i đ nh nghĩa l p và các ki u đ i t

ng

ờ ị

ố ượ

Tr v t n M c

ở ề ậ

ụ 1.5 khi chúng ta đ nh nghĩa l p

ớ Hello, ta đ ng th i t o nên m t ki u đ i t ng có

ờ ạ

ố ượ

tên Hello. Ta không t o nên bi n nào thu c ki u

ế

ể Hello này, và cũng không dùng new đ t o ra đ i

ể ạ

t

ng

ượ Hello nào, song vi c đó là hoàn toàn có th !

Ví d đó ch ng có m y tác d ng minh h a, b i không lý gì đ ta t o ra m t đ i t

ng

ộ ố ượ Hello nh v y, và

ư ậ

dù có t o nên thì cũng ch ng đ làm gì. Trong ch

ng này, ta s xét đ n nh ng đ nh nghĩa l p đ t o

ươ

ế

ể ạ

nên các ki u đ i t

ng

ố ượ có ích.

Sau đây là nh ng ý t

ng quan tr ng nh t trong ch

ng:

ưở

ươ

Vi c đ nh nghĩa m t l p m i đ ng th i cũng t o nên m t đ i t

ng m i cùng tên.

ệ ị

ộ ớ

ớ ồ

ộ ố ượ

L i đ nh nghĩa l p cũng gi ng nh m t b n m u cho các đ i t

ng: nó quy đ nh nh ng bi n th c th

ờ ị

ư ộ ả

ố ượ

ế

nào mà đ i t

ng đó ch a đ ng, và nh ng ph

ng th c nào có th ho t đ ng v i chúng.

ố ượ

ươ

ạ ộ

M i đ i t

ng thu c v m t ki u đ i t

ng nào đó; nh v y, nó là m t th c th c a m t l p nào đó.

ỗ ố ượ

ộ ề ộ

ố ượ

ư ậ

ể ủ

ộ ớ

Khi b n kích ho t

ạ new đ t o nên m t đ i t ng, Java kích ho t m t ph ng th c đ c bi t có tên

ể ạ

ộ ố ượ

ươ

ứ ặ

constructor đ kh i t o các bi n th c th . B n c n cung c p m t ho c nhi u constructor trong l i

ở ạ

ế

ể ạ ầ

đ nh nghĩa l p.

Các ph

ng th c thao tác trên m t ki u đ

c đ nh nghĩa trong l i đ nh nghĩa l p cho ki u đó.

ươ

ượ ị

ờ ị

Sau đây là m t s v n đ v l i đ nh nghĩa l p:

ộ ố ấ

ề ề ờ ị

Tên l p (và do đó, tên c a ki u đ i t

ng) nên b t đ u bàng m t ch in, đ phân bi t chúng v i các

ố ượ

ắ ầ

ki u nguyên th y và nh ng tên bi n.

ế

B n th

ng đ t m t l i đ nh nghĩa l p vào trong m i file, và tên c a file ph i gi ng nh tên c a l p,

ườ

ộ ờ ị

ư

ủ ớ

v i ph n m r ng

ở ộ .java. Ch ng h n, l p

ớ Time đ c đ nh nghĩa trong file có tên

ượ ị

Time.java.

b t kì ch

ng trình nào, luôn có m t l p đ

c giao làm

Ở ấ

ươ

ộ ớ

ượ

l p kh i đ ng

ở ộ . L p kh i đ ng ph i ch a

ở ộ

m t ph

ng th c mang tên

ươ

main, đó là n i mà vi c th c thi ch

ng trình b t đ u. Các l p khác cũng

ơ

ươ

ắ ầ

th

ch a ph ng th c cùng tên

ươ

main, song ph

ng th c đó s không đ

c th c thi t đ u.

ươ

ượ

ừ ầ

Khi đã nêu nh ng v n đ này r i, ta hãy xét m t ví d v l p do ng

i dùng đ nh nghĩa, l p

ụ ề ớ

ườ

ớ Time.

11.2 Time

M t đ ng l c chung cho vi c t o nên ki u đ i t

ng, đó là đ gói g n nh ng d li u liên quan vào trong

ộ ộ

ệ ạ

ố ượ

ữ ệ

m t đ i t

ng đ ta có th coi nh m t đ n v duy nh t. Ta đã g p hai ki u nh v y, đó

ộ ố ượ

ư ộ ơ

ư ậ

là Point và Rectangle.
M t ví d khác, mà ta s t tay l p nên, là

ẽ ự

Time, đ bi u di n gi đ ng h . D li u đ

c gói trong m t

ể ể

ờ ồ

ồ ữ ệ

ượ

đ i t

ng Time bao g m có s gi , s phút, và s giây. B i m i đ i t

ng

ố ượ

ố ờ ố

ỗ ố ượ Time đ u ch a nh ng d li u

ữ ệ

này, nên ta c n bi n th c th đ l u gi chúng.

ế

ể ể ư

B

c đ u tiên là xác đ nh xem t ng bi n ph i thu c ki u gì. D

ng nh rõ ràng là

ướ ầ

ế

ườ

ư

hour (gi )

và minute (phút) đ u ph i là nh ng s nguyên. Đ cho v n đ đ

c thú v h n, ta hãy đ t

ề ượ

ị ơ

ặ second (giây)

là m t

ộ double.

Các bi n th c th đ

c đ nh nghĩa đo n đ u c a l i khai báo l p, bên ngoài b t kì l i khai báo ph

ng

ế

ể ượ ị

ầ ủ ờ

ươ

th c nào khác, nh sau:

ư