Bài giảng Lập trình hướng đối tượng - Chương 3: Kế thừa - Đa hình
Số trang: 53
Loại file: ppt
Dung lượng: 638.50 KB
Lượt xem: 14
Lượt tải: 0
Xem trước 6 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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.
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng - Chương 3: Kế thừa - Đa hình TrườngĐaihọcKinhTếTP.HCM KhoaHệthốngthôngtinkinhdoanhLẬPTRÌNHHƯỚNGĐỐITƯỢNG KẾ THỪA – ĐA HÌNH Nội dung1. Kế thừa1. Kế thừa2. Đa hình2. Đa hình3. Lớp trừu ttượng3. Lớp trừu ượng4. Lớp niêm phong4. Lớp niêm phong5. Lớp trong llớp5. Lớp trong ớp6. Giao diện6. 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 Deskclassdesk:table classtable:furniture classdining_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 DLớ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ở Point2Dclass 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 Point2Dclass 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ấtclass 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ội dung trích xuất từ tài liệu:
Bài giảng Lập trình hướng đối tượng - Chương 3: Kế thừa - Đa hình TrườngĐaihọcKinhTếTP.HCM KhoaHệthốngthôngtinkinhdoanhLẬPTRÌNHHƯỚNGĐỐITƯỢNG KẾ THỪA – ĐA HÌNH Nội dung1. Kế thừa1. Kế thừa2. Đa hình2. Đa hình3. Lớp trừu ttượng3. Lớp trừu ượng4. Lớp niêm phong4. Lớp niêm phong5. Lớp trong llớp5. Lớp trong ớp6. Giao diện6. 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 Deskclassdesk:table classtable:furniture classdining_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 DLớ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ở Point2Dclass 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 Point2Dclass 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ấtclass 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ả ...
Tìm kiếm theo từ khóa liên quan:
Kế thừa đa hình Lớp niêm phong Lớp trừu tượng Lập trình hướng đối tượng Tài liệu lập trình hướng đối tượng Cơ bản lập trình hướng đối tượng Bài giảng lập trình hướng đối tượng chương 3Gợi ý tài liệu liên quan:
-
Bài giảng Phân tích thiết kế phần mềm: Chương 7 - Trường ĐH Ngoại ngữ - Tin học TP.HCM
16 trang 350 0 0 -
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 271 0 0 -
101 trang 199 1 0
-
14 trang 133 0 0
-
Giáo trình lập trình hướng đối tượng - Lê Thị Mỹ Hạnh ĐH Đà Nẵng
165 trang 112 0 0 -
Giáo trình Lập trình Windows 1 - Trường CĐN Đà Lạt
117 trang 96 0 0 -
Giáo trình Phân tích, thiết kế hướng đối tượng với UML: Phần 1 - Trường ĐH Công nghiệp Quảng Ninh
111 trang 95 0 0 -
265 trang 78 0 0
-
Giáo trình Lập trình hướng đối tượng với Java: Phần 2 - Trần Thị Minh Châu, Nguyễn Việt Hà
141 trang 75 0 0 -
33 trang 68 0 0