này, l p s n có đôi khi còn đ
c g i là l p
ớ ẵ
ượ ọ
ớ cha mẹ và l p m i đ c g i là l p
ớ
ớ ượ ọ
ớ con.
u đi m c b n c a đ c đi m này là b n có th b sung đ
c nh ng ph
ng th c và bi n th c th mà
Ư
ể
ơ ả ủ
ặ
ể
ạ
ể ổ
ượ
ữ
ươ
ứ
ế
ự
ể
không c n s a đ i l p cha m . Đi u này đ c bi t h u ích đ i v i các l p Java, vì b n có mu n cũng
ầ ử
ổ ớ
ẹ
ề
ặ
ệ ữ
ố ớ
ớ
ạ
ố
ch ng th s a đ i đ
c chúng.
ẳ
ể ử
ổ ượ
N u b n đã làm các bài t p GridWorld r i ( các Ch
ng
ế
ạ
ậ
ồ ở
ươ 5 và 10), b n s th y m t s ví d v th a k :
ạ ẽ ấ
ộ ố
ụ ề ừ ế
public class
BoxBug
extends
Bug {
private int
steps;
private int
sideLength;
public
BoxBug(
int
length) {
steps = 0;
sideLength = length;
}
}
BoxBug extends Bug nghĩa là BoxBug là m t lo i
ộ
ạ Bug m i đ a k th a nh ng ph ng th c và bi n th c
ớ ự ế ừ
ữ
ươ
ứ
ế
ự
th c a
ể ủ Bug. Ngoài ra:
•
L p con có th có thêm các bi n th c th khác. Trong ví d này, các
ớ
ể
ế
ự
ể
ụ
BoxBug có steps và sideLength.
•
L p con có th có thêm các ph
ng th c khác. Trong ví d này, các
ớ
ể
ươ
ứ
ụ
BoxBug có thêm m t constructor
ộ
nh n vào tham s nguyên.
ậ
ố
•
L p con có th
ớ
ể ghi đè lên m t ph ng th c th a h ng t l p cha m . Trong ví d này, l p con cung
ộ
ươ
ứ
ừ
ưở
ừ ớ
ẹ
ụ
ớ
c p ph
ng th c
ấ
ươ
ứ act (không ch ra đây), đ ghi đè lên ph ng th c
ỉ
ở
ể
ươ
ứ act c a l p cha m .
ủ ớ
ẹ
N u b n đã làm các bài t p v đ h a Ph l c
ế
ạ
ậ
ề ồ ọ ở
ụ ụ A, b n còn th y m t ví d n a:
ạ
ấ
ộ
ụ ữ
public class
MyCanvas
extends
Canvas {
public void
paint(Graphics g) {
g.fillOval(100, 100, 200, 200);
}
}
MyCanvas là m t ki u m i c a
ộ
ể
ớ ủ Canvas, ch ng có thêm ph ng th c hay bi n th c th nào, song nó ghi
ẳ
ươ
ứ
ế
ự
ể
đè lên paint.
N u b n ch a t ng làm bài nào trong s đó thì gi đã là lúc r i!
ế
ạ
ư ừ
ố
ờ
ồ
15.7 C u trúc th a k l p
ấ
ừ
ế ớ
Trong Java, t t c m i l p đ u m r ng t m t l p nào đó khác. L p c b n nh t đ
c g i là
ấ ả ọ ớ
ề
ở ộ
ừ ộ ớ
ớ ơ ả
ấ ượ ọ
Object. Nó
không ch a bi n th c th nào, nh ng có cung c p các ph
ng th c
ứ
ế
ự
ể
ư
ấ
ươ
ứ equals và toString, cùng nh ng
ữ
ph
ng th c khác.
ươ
ứ
Nhi u l p m r ng
ề ớ
ở ộ Object, g m c h u h t nh ng l p ta đã vi t và nhi u l p Java khác,
ồ
ả ầ
ế
ữ
ớ
ế
ề ớ
nh
ư java.awt.Rectangle. B t kì l p nào không nói rõ tên l p cha m ra, thì đ u m c đ nh là th a h ng
ấ
ớ
ớ
ẹ
ề
ặ ị
ừ
ưở
t
ừ Object.
Tuy v y, m t s chu i th a k thì dài h n. Ch ng h n,
ậ
ộ ố
ỗ
ừ ế
ơ
ẳ
ạ javax.swing.JFrame m r ng
ở ộ java.awt.Frame,
đ n l
t nó l i m r ng
ế ượ
ạ
ở ộ Window, đ n l t nó m r ng
ế ượ
ở ộ Container, đ n l t nó m r ng
ế ượ
ở ộ Component,