Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 49 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
49
Dung lượng
1,02 MB
Nội dung
PHƢƠNG PHÁP LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn KẾ THỪA (INHERITANCE) Nội dung trình bày Giới thiệu kế thừa Phạm vi sử dụng Lớp Object Cài đặt lại phƣơng thức 2 Giới thiệu kế thừa Tính chất kế thừa trong lập trình hƣớng đối tƣợng cho phép xây dựng một lớp đối tƣợng mới bằng cách mở rộng lớp đối tƣợng có sẵn. Lớp đối tƣợng có sẵn đƣợc gọi là lớp cơ sở (base class) Lớp đối tƣợng mới đƣợc gọi là lớp dẫn xuất (derived class) 3 Kế thừa 4 Kế thừa Lớp sinh viên đƣợc gọi là lớp cơ sở trực tiếp của lớp chính quy, lớp cao đẳng, lớp tại chức và lớp hoàn chỉnh. Các lớp dẫn xuất chính quy, cao đẳng, tại chức, hoàn chỉnh đƣợc gọi là các lớp dẫn xuất kế thừa trực tiếp từ lớp sinh viên. 5 Kế thừa Lớp dẫn xuất bao gồm các thành phần sau – Các thuộc tính và các phƣơng thức kế thừa đƣợc từ lớp cơ sở – Các thuộc tính và các phƣơng thức đƣợc định nghĩa thêm. 6 Kế thừa Lớp dẫn xuất đƣợc gọi là mở rộng lớp cơ sở bởi vì lớp dẫn xuất vừa chứa các thành phần kế thừa đƣợc từ lớp cơ sở vừa chứa các thành phần riêng của nó. Lƣu ý là lớp dẫn xuất không thể xóa bất cứ thuộc tính hay phƣơng thức nào kế thừa đƣợc từ lớp cơ sở. 7 Khai báo kế thừa trong C# Trong C++ một lớp đối tƣợng đƣợc phép kế thừa từ nhiều lớp đối tƣợng có sẵn. Trong C# và Java, một lớp đối tƣợng đƣợc phép kế thừa một lớp đối tƣợng có sẵn. 8 public class A { } public class B : A { } Kế thừa trong C# Lớp A đƣợc gọi là lớp cơ sở trực tiếp của lớp B Lớp B đƣợc gọi là lớp dẫn xuất kế thừa trực tiếp từ lớp A Sử dụng dấu : để khai báo lớp B kế thừa lớp A Lớp B kế thừa đƣợc các thuộc tính và các phƣơng thức đƣợc định nghĩa trong lớp A Lớp B đƣợc phép thêm các thuộc tính và các phƣơng thức riêng của mình Lớp B không đƣợc phép xóa các thuộc tính hay các phƣơng thức kế thừa đƣợc từ lớp A. 9 Ký hiệu kế thừa 10 [...]... không thể xóa các thuộc tính hay các phƣơng thức đƣợc kế thừa trong lớp cơ sở 17 Phạm vi sử dụng Phạm vi sử dụng ở lớp cơ sở private protected public 18 Phạm vi sử dụng ở lớp dẫn xuất Kế thừa được, không truy xuất trực tiếp, sử dụng gián tiếp thông qua các phương thức protected hay public của lớp cơ sở Kế thừa được, protected, truy xuất trực tiếp Kế thừa được, public, truy xuất trực tiếp Phạm vi sử dụng... private Lớp dẫn xuất B kế thừa từ A có: – Các thuộc tính kế thừa đƣợc từ A: n (không nhìn thấy và không sử dụng trực tiếp đƣợc) – Các thuộc tính riêng của B : m (có phạm vi sử dụng private) – Các phƣơng thức kế thừa đƣợc từ A: GetN, SetN (có phạm vi sử dụng public) – Các phƣơng thức riêng của B: GetM, SetM, Xuat (có phạm vi sử dụng public) 23 Phạm vi sử dụng private Lớp B kế thừa đƣợc thuộc tính n... protected Lớp dẫn xuất B kế thừa từ A có: – Các thuộc tính kế thừa đƣợc từ A: n (nhìn thấy và có thể sử dụng trực tiếp đƣợc) – Các thuộc tính riêng của B : m (có phạm vi sử dụng private) – Các phƣơng thức kế thừa đƣợc từ A: GetN, SetN (có phạm vi sử dụng public) – Các phƣơng thức riêng của B: GetM, SetM, Xuat (có phạm vi sử dụng public) 29 Phạm vi sử dụng protected Lớp B kế thừa đƣợc thuộc tính n của... trong lớp cơ sở sẽ đƣợc kế thừa trong các lớp dẫn xuất, đƣợc truy xuất trực tiếp và trở thành các thuộc tính hay phƣơng thức protected của các lớp dẫn xuất Các lớp dẫn xuất không thể xóa các thuộc tính hay các phƣơng thức đƣợc kế thừa trong lớp cơ sở 16 Phạm vi sử dụng public Các thuộc tính hay phƣơng thức đƣợc khai báo với phạm vi sử dụng là public trong lớp cơ sở sẽ đƣợc kế thừa trong các lớp dẫn... đƣợc khai báo với phạm vi sử dụng là private trong lớp cơ sở sẽ đƣợc kế thừa trong các lớp dẫn xuất Nhƣng không đƣợc phép sử dụng trực tiếp các thuộc tính hay các phƣơng thức này Các lớp dẫn xuất cũng không thể xóa các thuộc tính hay các phƣơng thức đƣợc kế thừa trong lớp cơ sở 14 Phạm vi sử dụng private Các lớp dẫn xuất kế thừa đƣợc các thuộc tính hay các phƣơng thức là private của lớp cơ sở... dụng public) – Phƣơng thức GetN, SetN (có phạm vi sử dụng public) 35 Phạm vi sử dụng public Lớp dẫn xuất B kế thừa từ A có: – Các thuộc tính kế thừa đƣợc từ A: n (nhìn thấy và có thể sử dụng trực tiếp đƣợc) – Các thuộc tính riêng của B : m (có phạm vi sử dụng private) – Các phƣơng thức kế thừa đƣợc từ A: GetN, SetN (có phạm vi sử dụng public) – Các phƣơng thức riêng của B: GetM, SetM, Xuat (có phạm... sở A, trong B có thể sử dụng trực tiếp(nhìn thấy trực tiếp) thuộc tính n Mặt khác trong B có thể sử dụng gián tiếp thuộc tính n thông qua phƣơng thức GetN và SetN kế thừa từ lớp cơ sở A Tƣơng tự cho việc sử dụng phƣơng thức là protected kế thừa đƣợc từ lớp cơ sở 30 Phạm vi sử dụng public 1 2 3 4 5 6 7 8 9 10 11 12 31 Lớp cơ sở A public class A { public int n; public void SetN(int n) { this.n=n; } public... thừa đƣợc thuộc tính n của lớp cơ sở A nhƣng không thể sử dụng trực tiếp(nhìn thấy trực tiếp) mà sử dụng gián tiếp thuộc tính n thông qua phƣơng thức GetN và SetN kế thừa từ lớp cơ sở A Tƣơng tự cho việc sử dụng phƣơng thức là private kế thừa đƣợc từ lớp cơ sở 24 Phạm vi sử dụng protected 1 2 3 4 5 6 7 8 9 10 11 12 25 Lớp cơ sở A public class A { protected int n; public void SetN(int n) { this.n=n;... Phạm vi sử dụng Thuộc tính hay phương thức đƣợc khai báo với phạm vi là private thì thuộc tính hay phƣơng thức đó chỉ được sử dụng trực tiếp bên trong lớp đó Thuộc tính hay phương thức đƣợc khai báo với phạm vi là public thì thuộc tính hay phƣơng thức đó có thể được sử dụng trực tiếp bên trong lớp, bên trong các lớp dẫn xuất và bên các lớp khác Thuộc tính hay phương thức đƣợc khai báo với phạm . thức 2 Giới thiệu kế thừa Tính chất kế thừa trong lập trình hƣớng đối tƣợng cho phép xây dựng một lớp đối tƣợng mới bằng cách mở rộng lớp đối tƣợng có sẵn. Lớp đối tƣợng có sẵn đƣợc. nào kế thừa đƣợc từ lớp cơ sở. 7 Khai báo kế thừa trong C# Trong C++ một lớp đối tƣợng đƣợc phép kế thừa từ nhiều lớp đối tƣợng có sẵn. Trong C# và Java, một lớp đối tƣợng đƣợc phép kế. PHƢƠNG PHÁP LẬP TRÌNH HƢỚNG ĐỐI TƢỢNG Nguyễn Hoàng Anh – nhanh@fit.hcmus.edu.vn KẾ THỪA (INHERITANCE) Nội dung trình bày Giới thiệu kế thừa Phạm vi sử dụng Lớp