Bài giảng Lập trình hướng đối tượng - Chương 3: Kế thừa - Đa hình
lượt xem 22
download
Nội dung cơ bản của chương 3 Kế thừa đa hình nằm trong bài giảng Lập trình hướng đối tượng nhằm trình bày về kế thừa, tính đa hình, lớp trừu tượng, lớp niêm phong, lớp trong lớp và giao diện.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng - Chương 3: Kế thừa - Đa hình
- Trường Đai học Kinh Tế TP.HCM Khoa Hệ thống thông tin kinh doanh LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG KẾ THỪA – ĐA HÌNH
- Nội dung 1. Kế thừa 1. Kế thừa 2. Đa hình 2. Đa hình 3. Lớp trừu ttượng 3. Lớp trừu ượng 4. Lớp niêm phong 4. Lớp niêm phong 5. Lớp trong llớp 5. Lớp trong ớp 6. Giao diện 6. Giao diện
- KẾ THỪA (inheritance)
- Kế thừa là gì?
- Định nghĩa kế thừa Kế thừa cho phép tạo ra một lớp có (kế thừa) thuộc tính và phương thức của một lớp khác. Lớp cha trong kế thừa được gọi là lớp cơ sở (base class). Lớp con kế thừa từ một lớp cha được gọi là lớp dẫn xuất (derived class). Khai báo lớp dẫn xuất kế thừa một lớp cơ sở: class :: class {{ ……………………. ……………………. }}
- Ví dụ kế thừa Furniture Chair Table Lounge Dining Chair Sofa Table Desk class desk: table class table: furniture class dining_table: table
- Đơn kế thừa và đa kế thừa Đơn kế thừa là một lớp dẫn xuất chỉ được kế thừa từ một lớp cơ sở Đa kế thừa là một lớp dẫn xuất được kế thừa từ nhiều lớp cơ sở C# chỉ cho phép 1 lớp được kế thừa từ 1 lớp cơ sở. Đa kế thừa bằng cách thực thi nhiều giao diện (interface).
- Kế thừa được gì? Dẫn xuất từ cơ sở Thành viên Thành viên A A Thành viên Thành viên B B Dẫn xuất từ Thành viên Thành viên C C Thành viên D Lớp cơ sở Được tạo trong lớp dẫn xuất Lớp dẫn xuất
- Ví dụ 5’ class ConNguoi { public ConNguoi(){ ….. } } Lớp SinhVien class SinhVien:ConNguoi{ kế thừa từ lớp ConNguoi public SinhVien() { ……… } }
- Gọi hàm khởi tạo của lớp cơ sở Vì lớp dẫn xuất không thể kế thừa phương thức khởi tạo (Constructor) của lớp cơ sở nên một lớp dẫn xuất phải thực thi phương thức khởi tạo riêng của nó. Nếu lớp cơ sở có một phương thức khởi tạo mặc định (phương thức khởi tạo không có tham số) thì phương thức khởi tạo của lớp dẫn xuất được định nghĩa như cách thông thường.
- Gọi hàm khởi tạo của lớp cơ sở Nếu lớp cơ sở có phương thức khởi tạo có tham số thì lớp dẫn xuất phải định nghĩa phương thức tạo lập có tham số theo cú pháp sau: TênLớpCon(ThamSốLớpCon): base (ThamSốLớpCha) TênLớpCon(ThamSốLớpCon): base (ThamSốLớpCha) {{ // Khởii ttạo giá trịị cho các thành phần của lớp dẫn xuấtt // Khở ạo giá tr cho các thành phần của lớp dẫn xuấ }}
- Gọi hàm khởi tạo của lớp cơ sở // Lớp cơ sở Point2D class Point2D { public int x,y; public Point2D(int a, int b) { x = a ; y = b; } public void Xuat2D() { Console.WriteLine("({0}, {1} )", x, y); } }
- Gọi hàm khởi tạo của lớp cơ sở // Lop dan xuat Point3D ke thua tu lop Point2D class Point3D:Point2D { public int z; public Point3D(int a,int b,int c) : base(a,b) { z=c; } public void Xuat3D() { Console.WriteLine("({0}, {1} , {2})", x, y, z); } }
- Gọi hàm khởi tạo của lớp cơ sở public static void Main() { Point2D p2 = new Point2D(1,2); Console.Write("Toa do cua diem 2 D :"); p2.Xuat2D(); Point3D p3 = new Point3D(4,5,6); Console.Write("Toa do cua diem 3 D :"); p3.Xuat3D(); Console.ReadLine(); }
- Định nghĩa phiên bản mới trong lớp dẫn xuất Trường hợp lớp dẫn xuất có thuộc tính hoặc phương thức trùng tên (không có từ khoá abstract hay virtual) trong lớp cơ sở thì trình biên dịch sẽ có cảnh báo dạng như sau: “keyword new is required on ‘LớpDẫnXuất.X’ because it hides inherited member on ‘LớpCơSở.X” Để khắc phục việc này ta dùng từ khóa new ngay câu lệnh khai báo thành phần đó. Từ khóa new trong trường hợp này có tác dụng che dấu thành phần kế thừa đó từ lớp cơ sở.
- Định nghĩa phiên bản mới trong lớp dẫn xuất Nếu phương thức của lớp dẫn xuất muốn truy xuất đến thành viên X của lớp cơ sở? Sử dụng từ khóa base theo cú pháp: base.X
- Định nghĩa phiên bản mới trong lớp dẫn xuất class Xe { protected int TocDo; //khai báo protected để có thể truy xuất protected string BienSo; protected string HangSX; public Xe(int td, string bs, string hsx) { TocDo = td; BienSo = bs; HangSX = hsx; } public void Xuat() { Console.Write("Xe: {0}, Bien so: {1}, Toc do: {2} kmh",HangSX, BienSo,TocDo); } }
- Định nghĩa phiên bản mới trong lớp dẫn xuất class XeHoi: Xe { int SoHanhKhach; public XeHoi(int td, string bs, string hsx, int shk): base(td, bs, hsx) { SoHanhKhach = shk; } public new void Xuat() { base.Xuat(); //gọi hàm Xuat() của lớp cơ sở Console.WriteLine(", {0} cho ngoi", SoHanhKhach); } }
- Tham chiếu thuộc lớp cơ sở Một tham chiếu thuộc lớp cơ sở có thể trỏ đến một đối tượng thuộc lớp dẫn xuất Nhưng nó chỉ được phép truy cập đến các thành phần được khai báo trong lớp cơ sở
- Tham chiếu thuộc lớp cơ sở public static void Main() { XeHoi c = new XeHoi(150,"49A-4444", "Toyota", 24); c.Xuat(); Console.WriteLine(); Console.WriteLine("Tham chieu cua lop co so Xe co the tro den doi tuong thuoc lop dan xuat XeHoi"); Console.WriteLine("Nhung chi co the goi ham xuat tuong ung voi Xe"); Xe h = c; Kết quả h.Xuat(); khi gọi Console.ReadLine(); h.Xuat() ??? }
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 120 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 86 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 103 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn