1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng kỹ thuật lập trình chương 5

27 265 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 193,38 KB

Nội dung

Chương Kế thừa đa hình Nội dung Khái niệm kế thừa Khái niệm đa hình Giao diện (interface) Kế thừa Các đối tượng có chung số đặc điểm, hành vi nhóm lại với Ví dụ      Xe đạp Xe máy Xe Xe tải  Phương tiện giao thông Kế thừa Ví dụ: Windows form Kế thừa Tạo lớp từ việc sử dụng lại thành phần lớp có Lợi ích  Nhất quán  Thuận tiện  Tái sử dụng code Khai báo kế thừa Lớp sở (base class): làm sở để lớp khác kế thừa Lớp nhận (derived class): kế thừa đặc điểm lớp sở Khai báo  class LopNhan : LopCoSo  Ví dụ: • class XeDap : PhuongTienGiaoThong • class XeMay : PhuongTienGiaoThong Constructor Không kế thừa Lớp truy cập 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) { } } Từ khóa base Dùng để truy cập đến thành phần lớp sở Mức truy cập:  public  protected Khai báo class { … (list_of_argument){ } } class : { base.( … ); } Từ khóa new Dùng để khai báo phương thức lớp nhận có phương thức tên lớp sở Ví dụ  public new void TinhDienTich() {…} Đa hình Lớp nhận kế thừa từ lớp sở có thêm đặc tính riêng biệt Từ khóa:  virtual • Khai báo lớp sở, cho biết thành phần nạp chồng  override • Khai báo lớp nhận, cho biết thành phần nạp chồng Ví dụ đa hình HinhHoc hh = new HinhHoc(); //TinhDienTich cua lop HinhHoc hh.TinhDienTich(); HinhHoc htr = new HinhTron(); //TinhDienTich cua lop HinhTron htr.TinhDienTich(); Giao diện (Interface) Interface giao ước, lớp thực inteface phải tuân theo interface mô tả Thành phần  Property  Method  Event Interface Khai báo interface TenInterface { //các thành phần } Mức truy xuất: public Các phương thức có phần khai báo, phần thân Ví dụ interface ILamViec { string LamViec(string tenViec); } Ví dụ (tt) Lớp SinhVien thực interface ILamViec class SinhVien { public public public : ILamViec string MSSV { get; set; } string Nganh { get; set; } string HoTen { get; set; } public string LamViec(string tenViec) { return "Sinh Vien " + HoTen + " dang " + tenViec; } } Ví dụ (tt) Lớp NhanVien thực 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 { get { return HsLuong * 800000; } } public string LamViec(string tenViec) { return "NhanVien " + HoTen + " dang " + tenViec; } } Ví dụ Thực thi interface static void Main(string[] args) { SinhVien a = new SinhVien(); a.HoTen = "SVA"; NhanVien b = new NhanVien(); b.HoTen = "NVB"; ILamViec lv1 = a; Console.WriteLine(lv1.LamViec("hoc bai")); ILamViec lv2 = b; Console.WriteLine(lv2.LamViec("lam bao cao")); } Ví dụ Kết Interface Interface kế thừa Một lớp thực nhiều interface Khi thực interface, lớp phải thực đầy đủ thành phần interface mô tả Ví dụ Interface IQuanTri interface IQuanTri { string GiaoViec(string tenViec, string tenNguoiNhan); } class SinhVien : ILamViec, IQuanTri { //… thành phần khác public string GiaoViec(string tenViec, string nguoiNhan) { return "Sinh vien " + HoTen + " dang giao viec " + tenViec + " cho " + nguoiNhan; } } Ví dụ Lớp QuanLy kế thừa NhanVien, thực IQuanTri class QuanLy : NhanVien, IQuanTri { public string LamViec(string tenViec) { return "Quan ly " + HoTen + " dang " + tenViec; } public string GiaoViec(string tenViec, string nguoiNhan) { return "Quan ly " + HoTen + " dang giao viec " + tenViec + " cho " + nguoiNhan; } } Ví dụ Thực thi giao diện IQuanTri SinhVien a = new SinhVien(); a.HoTen = "SVA"; NhanVien b = new NhanVien(); b.HoTen = "NVB"; QuanLy c = new QuanLy(); c.HoTen = "QLC"; IQuanTri qt1 = a; Console.WriteLine(qt1.GiaoViec("truc nhat", "SVB")); IQuanTri qt2 = c; Console.WriteLine(qt2.GiaoViec("dat hang", b.HoTen)); Ví dụ Kết Kiểm tra thực interface Từ khóa is  True đối tượng thực interface  False đối tượng không thực interface kt = a is IQuanTri; //kt =true kt = b is IQuanTri; //kt =false Kiểm tra thực interface Từ khóa as  Thực chuyển đổi sang interface  Nếu đối tượng không thực interface  null IQuanTri qt3 = a as IQuanTri; IQuanTri qt4 = b as IQuanTri; //null

Ngày đăng: 03/12/2015, 15:44