1. Trang chủ
  2. » Công Nghệ Thông Tin

Phương pháp lập trình đối hướng đối tượng - Kế thừa pps

49 331 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phương pháp lập trình đối hướng đối tượng - Kế thừa pps
Tác giả Nguyễn Hoàng Anh
Trường học Trường Đại Học Khoa Học Tự Nhiên, Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Lập trình hướng đối tượng
Thể loại Bài giảng
Thành phố Hồ Chí Minh
Định dạng
Số trang 49
Dung lượng 1,02 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ế

Trang 1

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)

Trang 2

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

Trang 3

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)

Trang 4

Kế thừa

Trang 5

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

Trang 6

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

Trang 7

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ở

Trang 8

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

public class A {

} public class B : A {

}

Trang 9

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

Trang 10

Ký hiệu kế thừa

Trang 12

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 đó

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 vi là protected 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 lẫn bên trong các lớp dẫn xuất

Trang 13

Phạm vi sử dụng

STT Tên phạm vi Phạm vi sử dụng

1 private Được sử dụng trực tiếp bên trong lớp

2 public Được sử dụng trực tiếp bên trong lớp và các lớp khác

3 protected Được sử dụng trực tiếp bên trong lớp và trong các lớp dẫn xuất

Trang 14

Phạm vi sử dụng private

 Các thuộc tính hay phương thức đượ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ở

Trang 15

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ở

 Nhưng không được phép sử dụng trực tiếp mà phải

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ở mà có sử dụng các thuộc tính hay phương thức này

 Ví dụ như sử dụng các phương thức cung cấp, cập nhật thông tin và các property hay phương thức nhập, xuất… (có phạm vi sử dụng protected hay public)

Trang 16

 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ở

Trang 17

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 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 public 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ở

Trang 18

Phạm vi sử dụng

Phạm vi sử dụng ở lớp cơ sở Phạm vi sử dụng ở lớp dẫn xuất

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ở

tiếp

Trang 19

return this n;

} }

Trang 20

public void SetM(int m) {

this.m = m;

} public int GetM() {

return this.m;

} public void Xuat() {

Console WriteLine( "n={0}, m={1}" , this.GetN(), this.m);

} }

Trang 24

Phạm vi sử dụng private

 Lớp B kế 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ở

Trang 25

public void SetN( int n) {

this n=n;

} public int GetN() {

return this n;

} }

Trang 26

public void SetM(int m) {

this.m = m;

} public int GetM() {

return this.m;

} public void Xuat() {

Console WriteLine( "n={0}, m={1}" , this.n, this.m);

} }

Trang 29

Phạm vi sử dụng 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)

Trang 30

Phạm vi sử dụng protected

 Lớp B kế thừa được thuộc tính n của lớp cơ 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ở

Trang 31

public void SetN( int n) {

this n=n;

} public int GetN() {

return this n;

} }

Trang 32

public void SetN( int n) {

this n=n;

} public int GetN() {

return this n;

} }

Trang 33

public void SetM(int m) {

this.m = m;

} public int GetM() {

return this.m;

} public void Xuat() {

Console WriteLine( "n={0}, m={1}" , this.n, this.m);

} }

Trang 36

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 vi sử dụng public)

Trang 37

Phạm vi sử dụng public

 Lớp B kế thừa được thuộc tính n của lớp cơ 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à public kế thừa được từ lớp cơ sở

Trang 38

Lớp Object

 Lớp Object là lớp đã được định nghĩa sẵn, trong lớp này có:

– Phương thức khởi tạo đối tượng mặc định

– Phương thức hủy đối tượng

– Các phương thức mức đối tượng Equals, GetHashCode, GetType, ToString()

– Phương thức mức lớp Equals

Trang 39

Lớp Object

Trang 40

Lớp Object

Trang 41

 Trong C# không hỗ trợ đa thừa kế, mỗi lớp có tối đa một lớp cơ sở Vì vậy khi ta khai báo một lớp kế thừa

từ một lớp khác ngoài Object thì lớp Object không còn

là lớp cơ sở ngầm định của lớp đó nữa

Trang 43

Lớp Object

 Lớp phân số kế thừa từ lớp Object

 Lớp phân số thừa hưởng được các phương thức từ lớp Object

– Các phương thức mức lớp: Equals, ReferenceEquals

– Các phương thức mức đối tượng: Equals, GetHashCode, ToString, GetType

Trang 44

}

Lớp SinhVienCaoDang public class SinhVienCaoDang : SinhVien

{

}

Trang 45

}

Trang 47

Cài đặt lại phương thức

 Đôi khi chúng ta cần định nghĩa lại các phương thức của lớp cơ sở trong lớp dẫn xuất

 Việc này được thực hiện bằng cách khai báo và cài đặt lại các phương thức này trong lớp dẫn xuất

Phương thức được định nghĩa lại còn được gọi là phương thức nạp chồng (overriden method)

trùng tên khác (nếu có) trong lớp cơ sở

Trang 48

Kế thừa

Ngày đăng: 13/07/2014, 14:21

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm