
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
1
K
Kế
ếth
thừ
ừa
a (
(inheritance)
inheritance)
1
Xây dựng lớp
có tính kếthừa
Xây d
Xây dự
ựng l
ng lớ
ớp
p
c
có
ót
tí
ính k
nh kế
ếth
thừ
ừa
a
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
2
Kh
Khá
ái ni
i niệ
ệm k
m kế
ếth
thừ
ừa trong C#
a trong C#
¾
¾K
Kế
ếth
thừ
ừa l
a là
à cơ ch
cơ chế
ếcho ph
cho phé
ép đ
p đị
ịnh ngh
nh nghĩ
ĩa m
a mộ
ột
t
l
lớ
ớp m
p mớ
ới (k
i (kế
ếth
thừ
ừa t
a từ
ừl
lớ
ớp cha)
p cha)
¾
¾Sau đ
Sau đó
óxây d
xây dự
ựng thêm c
ng thêm cá
ác thu
c thuộ
ộc t
c tí
ính v
nh và
àc
cá
ác
c
phương th
phương thứ
ức riêng c
c riêng củ
ủa l
a lớ
ớp đ
p đó
ó.
.
¾
¾L
Lớ
ớp cha trong s
p cha trong sự
ựk
kế
ếth
thừ
ừa đư
a đượ
ợc g
c gọ
ọi l
i là
àl
lớ
ớp
p
cơ s
cơ sở
ở(base class)
(base class)
¾
¾L
Lớ
ớp con trong s
p con trong sự
ựk
kế
ếth
thừ
ừa đư
a đượ
ợc g
c gọ
ọi l
i là
àl
lớ
ớp
p
d
dẫ
ẫn xu
n xuấ
ất (derived class)
t (derived class)
¾
¾Derived class
Derived class có hầu hết các thành phần
giống như lớp cơ sởtrừ????
private,constructor, static, destructor

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
3
Kh
Khá
ái ni
i niệ
ệm k
m kế
ếth
thừ
ừa trong C#
a trong C#
¾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"
VD:
Một sinh viên là một con người
Một tam giác là một đa giác
¾Kếthừa thường được dùng theo 2 cách:
Để phản ánh mối quan hệgiữa các lớp
Để phản ánh sựchia sẻ mã chương trình
giữa các lớp
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
¾Lớp Con Gà:
Có chân
Có mắt
Có cánh
Biết chạy
Biết ngủ
Biết bay
Biết vẫy cánh
¾Lớp Con Chó:
Có chân
Có mắt
Có đuôi
Biết chạy
Biết ngủ
Biết sủa
Biết vẫy đuôi
4
Kh
Khá
ái ni
i niệ
ệm k
m kế
ếth
thừ
ừa trong C#
a trong C#
Mã lệnh
bịtrùng
Mã lệnh
bịtrùng

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
¾Lớp động vật:
Có chân
Có mắt
Biết chạy
Biết ngủ
5
Kh
Khá
ái ni
i niệ
ệm k
m kế
ếth
thừ
ừa trong C#
a trong C#
¾Lớp Con Gà:
Có cánh
Biết bay
Biết vẫy cánh
¾Lớp Con Chó:
Có đuôi
Biết sủa
Biết vẫy đuôi
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
6
Syntax
Syntax
¾Cú pháp định nghĩa lớp dẫn xuất (lớp con):
class TênLớpCon :TênLớpCha
{// Thân lớp con
}
Hoặc
class TênLớpDẫnXuất :TênLớpCơSở
{// Thân lớp dẫn xuất
}
class DerivedClass:BaseClass
{// body of derived class
}

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
7
VD
VD
// Lớp cơ sởPoint2D
class Point2D
{
public int x,y;
public void Xuat2D()
{
Console.WriteLine("({0}, {1} )", x, y);
}
}
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
8
VD
VD
// Lop dan xuat Point3D ke thua tu lop Point2D
class Point3D:Point2D
{
public int z;
public void Xuat3D()
{
Console.WriteLine("({0}, {1} , {2})", x, y, z);
}
}

OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
9
VD
VD
public static void Main()
{
Point2D p2 = new Point2D();
p2.x = 1;
p2.y = 2;
p2.Xuat2D();
Point3D p3 = new Point3D();
p3.x = 4;
p3.y = 5;
p3.z = 6; // ?
p3.Xuat3D();
p3.Xuat2D(); // ?
Console.ReadLine();
}
OOP in C# - GV: Phạm Đình Sắc – dinhsac@gmail.com
10
VD:
VD:
Xây dựng Person class và Student class ?