Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 25 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
25
Dung lượng
106,01 KB
Nội dung
06/09/11 16:02 1 CHƯƠNG 4 06/09/11 16:02 2 Mục tiêu Tại sao sử dụng thừa kế, khi nào thì sử dụng thừa kế. Xây dựng lớp dẫn xuất. Tạo phương thức hỗ trợ đa hình. Lớp trừu tượng 06/09/11 16:02 3 Nội dung Tổng quát hóa và cá thể hóa (generalization and specialization) Kế thừa (inheritance) Đa hình (polymorphism) Lớp trừu tượng (abstract class) 06/09/11 16:02 4 4.1. Tổng quát hóa và cá thể hóa Tổng quát hóa: các lớp đối tượng có những thuộc tính, phương thức chung được tổng quát thành các lớp cha Cá thể hóa: các lớp con kế thừa các phương thức, thuộc tính của lớp cha và bổ sung thêm thuộc tính, phương thức của riêng nó Người Sinh viên Giáo viên Tổng quát hóa Cá thể hóa 06/09/11 16:02 5 4.2. Kế thừa (inheritance) Kế thừa (inheritance) là kỹ thuật thể hiện quan hệ cá thể hóa (specialization) Kế thừa có hai loại: đơn kế thừa và đa kế thừa. • Đơn kế thừa là lớp dẫn xuất được kế thừa từ một lớp cơ sở. • Đa kế thừa là lớp dẫn xuất được kế thừa từ nhiều lớp cơ sở. 06/09/11 16:02 6 Cú pháp định nghĩa lớp dẫn xuất class TênLớpCon : TênLớpCha { // Thân lớp con } 06/09/11 16:02 7 Ví dụ kế thừa class Ngươi { } class SinhVien: Ngươi { } class GiaoVien:Ngươi { } 06/09/11 16:02 8 Ưu điểm của kỹ thuật kế thừa Khả năng tái sử dụng mã. VD: lớp Sinh viên có thể sử dụng một số phương thức, thuộc tính của lớp Người Khả năng sử dụng kỹ thuật đa hình (Polymorphism) VD: lớp Người có phương thức Hienthi(), lớp Sinh viên và Giáo viên cũng có phương thức Hienthi(). 06/09/11 16:02 9 Gọi Constructor của lớp Cơ sở (1) Vì lớp dẫn xuất không thể kế thừa phương thức tạo lập (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 tạo lập riêng của mình. Nếu lớp cơ sở có một phương thức tạo lập mặc định thì phương thức tạo lập của lớp dẫn xuất được định nghĩa như cách thông thường. 06/09/11 16:02 10 Gọi Constructor của lớp Cơ sở (2) 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):base(ThamSốLớpCha) { // Khởi tạo giá trị cho các thành phần của lớp dẫn xuất } [...]... } 06/09/11 16:02 21 Boxing và Unboxing d li u M i ki u d li u, d ng s n hay do ngư i dùng đ nh nghĩa, đ u đư c l y t m t l p cơ b n là Object trong namespace System Boxing là quá trình chuy n d li u t ki u tham tr sang ki u tham chi u.Quá trình boxing m t bi n ki u tham tr s kh i t o m t đ i tư ng trong vùng nh Heap và copy giá tr c a bi n tham tr vào đ i tư ng m i này ! Và quá trình boxing đư c th... ch s báo l i do ghi đè phương th c có khai báo sealed { } } 06/09/11 16:02 16 4.3 a hình Overriding method: N u m t hàm đư c đ nh nghĩa trong l p con có cùng tên, ki u v i hàm trong l p cha, khi y hàm trong l p con s overrides (làm n) hàm trong l p cha ó đư c g i là overriding 06/09/11 16:02 17 T o phương th c h tr đa hình public virtual void Nhap( ) { //Code statements } Ngư i Sinh viên Giáo viên public... Sinh viên Giáo viên public override void Nhap( ) { //Code statements } 06/09/11 16:02 18 4.4.L p tr u tư ng S d ng l p tr u tư ng khi: • Yêu c u t t c các l p con, k th a t nó ph i cài đ t m t ho c m t vài phương th c nào đó c đi m c a l p tr u tư ng • L p tr u tư ng là l p t n t i ít nh t m t phương th c tr u tư ng • Trong thân phương th c tr u tư ng không có câu l nh nào • Không th t o đ i tư ng c... câu l nh khai báo thành ph n đó T khóa new có tác d ng che d u thành ph n k th a đó đ i t base class 06/09/11 16:02 12 Ví d public new void Nhap() 06/09/11 16:02 13 Ngăn c m k th a C# cho phép các l p và phương th c đư c khai báo sealed i u này có nghĩa là b n không đư c quy n th a k l p đó, n u là phương th c t c là b n không đư c phép override nó 06/09/11 16:02 14 sealed class FinalClass { // etc... trình boxing m t bi n ki u tham tr s kh i t o m t đ i tư ng trong vùng nh Heap và copy giá tr c a bi n tham tr vào đ i tư ng m i này ! Và quá trình boxing đư c th c hi n ng m đ nh 06/09/11 16:02 22 Boxing và Unboxing d li u Unboxing là quá trình ngư c l i v i boxing, t c là đưa t ki u tham chi u ra ki u tham tr Quá trình này s đư c th c hi n m t cách tư ng minh G m có 2 bư c : • Bư c 1 : Ki m tra ch c . (inheritance) Kế thừa (inheritance) là kỹ thuật thể hiện quan hệ cá thể hóa (specialization) Kế thừa có hai loại: đơn kế thừa và đa kế thừa. • Đơn kế thừa là lớp dẫn xuất được kế thừa từ một. tiêu Tại sao sử dụng thừa kế, khi nào thì sử dụng thừa kế. Xây dựng lớp dẫn xuất. Tạo phương thức hỗ trợ đa hình. Lớp trừu tượng 06/09/11 16:02 3 Nội dung Tổng quát hóa và cá thể hóa (generalization. sở. • Đa kế thừa là lớp dẫn xuất được kế thừa từ nhiều lớp cơ sở. 06/09/11 16:02 6 Cú pháp định nghĩa lớp dẫn xuất class TênLớpCon : TênLớpCha { // Thân lớp con } 06/09/11 16:02 7 Ví dụ kế thừa class