Bài giảng Lập trình hướng đối tượng 1: Chương 4 - ThS. Thái Kim Phụng
lượt xem 5
download
Bài giảng Lập trình hướng đối tượng 1: Chương 4 Kế thừa – đa hình do ThS. Thái Kim Phụng biên soạn cung cấp cho người học các kiến thức: Kế thừa, đa hình, lớp trừu tượng, lớp niêm phong, lớp trong lớp, 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 1: Chương 4 - ThS. Thái Kim Phụng
- Trường ĐH Kinh Tế Tp.HCM Khoa Tin Học Quản Lý LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1 CHƯƠNG 4: KẾ THỪA – ĐA HÌNH
- Nội dung 1. 1. Kế Kếthừa thừa 2. 2.Đa Đahình hình 3. 3. Lớp Lớptrừu trừutượng tượng 4. 4. Lớp Lớpniêm niêm phong phong 5. 5.Lớp Lớptrong trong lớp lớp 6. 6.Giao Giao diện 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 tạo lập 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): TênLớpCon(ThamSốLớpCon): base base (ThamSốLớpCha) (ThamSốLớpCha) {{ //// Khởi Khởi tạo tạo giá giá trị trị cho cho các các thành thành phần phần của của lớp lớp dẫn dẫn xuất xuất }}
- 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 đó đối 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"); XeHoi 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 | 87 | 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 | 104 | 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