Bài giảng Kỹ thuật lập trình C - Chương 5: Kế thừa và đa hình cung cấp cho người học các kiến thức: Khái niệm kế thừa, khái niệm đa hình, giao diện (interface). Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.
Trang 1Chương 5
Trang 2N i dungộ
vKhái ni m k th aệ ế ừ
vKhái ni m đa hìnhệ
vGiao di n (interface)ệ
Trang 4K th aế ừ
vVí d : Windows formụ
Trang 8vKhông được k th aế ừ
vL p con truy c p b ng t khóa ớ ậ ằ ừ base
class HinhHoc {
… public HinhHoc(double chuVi, double dienTich) {
ChuVi = chuVi;
DienTich = dienTich;
} } class HinhTron : HinhHoc {
… public HinhTron(double chuVi, double dienTich) : base(chuVi, dienTich)
{ } }
Trang 11vTrong m t t p các l p có m i quan h huy t th ng ộ ậ ớ ố ệ ế ố
có các phương th c gi ng signature y xì (n i dung ứ ố ộ
phương th c khác nhau)ứ
vOverriding methods giúp l p trình viên có th đ nh ậ ể ịnghĩa cách hành x khác nhau ng v i các đ i ử ứ ớ ố
tượng khác nhau nh ng cùng s d ng m t tên ư ử ụ ộ
phương th c.ứ
vVí d : Nhân viên chính th c và Nhân viên th i v ụ ứ ờ ụ
đ u có phề ương th c là Tính Lứ ương, tuy nhiên cách
th c tính lứ ương c a 2 đ i tủ ố ượng này s khác nhau.ẽ
Trang 12vVí d mô hình l p NhanVien có phụ ớ ương th c tính ứ
lương
Trang 14vKhi tham chi u đ n đ i tế ế ố ượng:
§ N u đ i tế ố ượng là l p c s ớ ơ ở phương th c ứ
virtual c a l p c s đủ ớ ơ ở ược th c hi nự ệ
§ N u đ i tế ố ượng là l p nh n ớ ậ phương th c ứ
override c a l p nh n đủ ớ ậ ược th c hi nự ệ
Trang 19Ví d Đa hìnhụ
v HinhHoc hh = new HinhHoc();
v //TinhDienTich cua lop HinhHoc
v hh.TinhDienTich();
v HinhHoc htr = new HinhTron();
v //TinhDienTich cua lop HinhTron
v htr.TinhDienTich();
Trang 21//các thành phần }
Trang 23Ví d (tt)ụ
vL p SinhVien th c hi n interface ILamViecớ ự ệ
class SinhVien : ILamViec
{
public string MSSV { get; set; }
public string Nganh { get; set; }
public string HoTen { get; set; }
public string LamViec(string tenViec)
Trang 24Ví d (tt)ụ
vL p NhanVien th c hi n ILamViecớ ự ệ
class NhanVien : ILamViec
{
public string MSNV { get; set; }
public string Phong { get; set; }
public string HoTen { get; set; }
public int HsLuong { get; set; }
public virtual int Luong
Trang 26Ví d (tt)ụ
vK t quế ả
Trang 27vInterface có th k th aể ế ừ
vM t l p có th th c hi n ộ ớ ể ự ệ 1 ho c nhi u ặ ề interface
vKhi th c hi n interface, l p đó ph i ự ệ ớ ả th c hi n đ y ự ệ ầ
đủ nh ng thành ph n interface đó mô tữ ầ ả
Trang 28return "Sinh vien " + HoTen
+ " dang giao viec " + tenViec + " cho " + nguoiNhan;
}
}
Trang 29vL p QuanLy k th a NhanVien, th c hi n IQuanTriớ ế ừ ự ệ
class QuanLy : NhanVien, IQuanTri
return "Quan ly " + HoTen
+ " dang giao viec " + tenViec + " cho " + nguoiNhan;
}
}
Trang 31vK t quế ả
Trang 32Ki m tra th c hi n Interfaceể ự ệ
vT khóa ừ is
§ True n u đ i tế ố ượng th c hi n interfaceự ệ
§ False n u đ i tế ố ượng không th c hi n interfaceự ệ
kt = a is IQuanTri; //kt =true
kt = b is IQuanTri; //kt =false
Trang 33Ki m tra th c hi n Interfaceể ự ệ
vT khóa ừ as
§ Th c hi n chuy n đ i sang interfaceự ệ ể ổ
§ N u đ i tế ố ượng không th c hi n interface ự ệ null
IQuanTri qt3 = a as IQuanTri;
IQuanTri qt4 = b as IQuanTri; //null
Trang 34END