
S k th aự ế ừ

4.1 M ởđuầ
-S k th a là m t ự ế ừ ộ đc ặđi m c a ngôn ng dùng ể ủ ữ đ bi u ể ể
di n m i quan h ễ ố ệ đc bi t gi a các l p. Các l p ặ ệ ữ ớ ớ đưc tr u ợ ừ
tưng hóa và t ch c thành m t sợ ổ ứ ộ ơ đ phân c p l p.ồ ấ ớ
-K th a là m t cế ừ ộ ơ ch tr u tế ừ ư ng hóaợ. Th t c và hàm là củ ụ ơ
ch tr u tế ừ ư ng hóa cho gi i thu t, record và struct là tr u ợ ả ậ ừ
tưng hóa cho d li u. Khái ni m l p trong C++, k t h p ợ ữ ệ ệ ớ ế ợ
d li u và th t c ữ ệ ủ ụ đ ểđưc ki u d li u tr u tợ ể ữ ệ ừ ư ng v i giao ợ ớ
di n ệđc l p v i cài ộ ậ ớ đt và cho ngặ ư i s d ng c m giác ờ ử ụ ả
tho i mái nhả ư ki u d li u có s nể ữ ệ ẵ
-S k th a là m t m c cao hự ế ừ ộ ứ ơn c a tr u tủ ừ ư ng hóa, cung ợ
c p m t cấ ộ ơ ch gom chung các l p có liên quan v i nhau ế ớ ớ
thành m t m c khái quát hóa ộ ứ đc trặ ưng cho toàn b các l p ộ ớ
nói trên. Các l p v i các ớ ớ đc ặđi m tể ương t nhau có th ự ể
đưc t ch c thành m t sợ ổ ứ ộ ơ đ phân c p k th a. L p trên ồ ấ ế ừ ớ ở
cùng là tr u từ ư ng hóa c a toàn b các l p bên dợ ủ ộ ớ ỏ ư i nó.ớ

M ởđuầ
•Quan h “là 1”: ệK th a ế ừ đưc s d ng thông d ng nh t ợ ử ụ ụ ấ đ ể
bi u di n quan h “là 1”.ể ễ ệ
–M t sinh viên là m t ngộ ộ ư iờ
–M t hình tròn là m t hình ellipseộ ộ
–M t tam giác là m t ộ ộ đa giác
•K th a t o kh nế ừ ạ ả ăng xây d ng l p m i t l p ự ớ ớ ừ ớ đã có, trong
đó hàm thành ph n ầđưc th a hợ ừ ư ng t l p cha. Trong C++, ở ừ ớ
k th a còn ế ừ đnh nghĩa s tị ự ương thích, nh ờđó ta có cơ ch ế
chuy n ki u t ể ể ự đng.ộ
•K th a v a có kh nế ừ ừ ả ăng t o cạ ơ ch khái quát hoá v a có ế ừ
kh nảăng chuyên bi t hoá.ệ
•K th a cho phép t ch c các l p chia s mã chế ừ ổ ứ ớ ẻ ương trình
chung nh v y có th d dàng s aờ ậ ể ễ ử ch a, nâng c p h ữ ấ ệ
th ng.ố

M ởđuầ
•K th a thế ừ ư ng ờđưc dùng theo hai cách:ợ
–Đ ph n ánh m i quan h gi a các l p. Là công c ể ả ố ệ ữ ớ ụ đ t ể ổ
ch c và phân c p l p d a vào s chuyên bi t hóa, trong ứ ấ ớ ự ự ệ
đó m t vài hàm thành ph n c a l p con là phiên b n hoàn ộ ầ ủ ớ ả
thi n ho c ệ ặ đc bi t hoá c a phiên b n l p cha. Trong ặ ệ ủ ả ở ớ
C++ m i quan h này thố ệ ư ng ờđưc cài ợđt s d ng:ặ ử ụ
K th a public.ế ừ
Hàm thành ph n là phầ ương th c oứ ả
–Đ ph n ánh s chia s mã chể ả ự ẻ ương trình gi a các l p ữ ớ
không có quan h v m t ng nghĩa nhệ ề ặ ữ ưng có th có t ể ổ
ch c d li u và mã chứ ữ ệ ương trình tương t nhau. Trong ự
C++, cơ ch chia s mã này thế ẻ ư ng ờđưc cài ợđt dùng: ặ
K th a private.ế ừ
Hàm thành ph n không là phầ ương th c o.ứ ả

4.2 K th a ế ừ đơn
•K th a có th ế ừ ể đưc th c hi n ợ ự ệ đ th hi n m i ể ể ệ ố
quan h 'là m t'.ệ ộ
•Xét hai khái ni m ệngưiờ và sinh viên v i m i quan ớ ố
h t nhiên: m t 'sinh viên' ệ ự ộ là m t ộ'ngưi'. Trong C+ờ
+, ta có th bi u di n khái ni m trên, m t sinh viên ể ể ễ ệ ộ
là m t ngộ ư i có thêm m t s thông tin và m t s ờ ộ ố ộ ố
thao tác (riêng bi t c a sinh viên).ệ ủ
•Ta t ch c l p sinh viên k th a t l p ngổ ứ ớ ế ừ ừ ớ ư i. L p ờ ớ
ngưi ờđưc g i là l p cha (superclass) hay l p cợ ọ ớ ớ ơ
s (base class). L p sinh viên ở ớ đưc g i là l p con ợ ọ ớ
(subclass) hay l p d n xu t (derived class). ớ ẫ ấ