Bài giảng Lập trình hướng đối tượng trong C++ - Phạm Thị Quỳnh - Chương 4: Đối tượng và lớp (Phần 4)

Từ khoá (Access Specifier) private, protected và public xác định khả năng truy nhập tới các thành phần của lớp cơ sở.

private: chỉ được truy nhập trong lớp cơ sở

protected:chỉ được truy nhập trong lớp cơ sở và lớp dẫn xuất của nó

public: được truy nhập ở cả bên ngoài phần định nghĩa lớp.

 

ppt14 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 1975 | Lượt tải: 2download
Tóm tắt nội dung Bài giảng Lập trình hướng đối tượng trong C++ - Phạm Thị Quỳnh - Chương 4: Đối tượng và lớp (Phần 4), để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
CHƯƠNG 4: ĐỐI TƯỢNG & LỚP	(IV) KẾ THỪA (Inheritance) 1. Lớp cơ sở và lớp dẫn xuất Chúng ta có thể chia các lớp thành những lớp nhỏ hơn. Một lớp có thể được các lớp khác kế thừa các thuộc tính và phương thức Lớp cơ sở (Base Class) Lớp dẫn xuất (Derived Class) Base Class Date class Date 	 { private:	 int day, month, year; 	// member data public:	 // member functions Date(int d, int m, int y); 	// constructor Date operator+(int days); int operator-(Date &date); bool LeapYear(); int DaysInMonth(); void Display(); }; Derived Class DateTime class DateTime : public Date { private:	 int hours, minutes; 	 // bổ sung thêm member data public:	 // bổ sung thêm member functions DateTime(int d, int m, int y, int h, int mi); // constructor void SetTime(int h, int m); void AddMinutes(int m); void AddHours(int h); void Display(); // overrides Date::Display() }; Derived Class DateTime ... DateTime::DateTime(int d, int m, int y, int h, int mi) : Date(d,m,y) 	// viện dẫn Date Constructor { 	hours=h; 	minutes = mi; } void DateTime::Display() { Date::Display(); 	// gọi Display() của lớp Date cout 23) 	{ hours-=24; *this++; 	//sử dụng toán tử ++ } } Derived Class DateTime ... Date justdt(12,6,1998); 	// constructor Date DateTime dt(13,2,1997,20,15); 	//constructor DateTime dt=dt+5; if (dt.LeapYear()) 	cout << ”Date is in a leapyear” << endl; else 	cout << ”Date is not in a leapyear” << endl; dt.AddHours(2); dt.Display(); 	// Display() của lớp DateTime justdt.Display(); 	// Display() của lớp Date Derived Class Constructors DateTime::DateTime(int d, int m, int y, int h, int m1) { 	Date(d,m,y) ; 	hours=h; 	 minutes=m1; } DateTime dt(12,4,1999,17,30); Chương trình dịch sẽ tạo ra một đối tượng kiểu DateTime và sau đó gọi hàm tạo DateTime() để khởi tạo nó. Hàm tạo DateTime() sẽ gọi hàm tạo Date() để khởi tạo day, month, year Hàm tạo DateTime khởi tạo hours, minutes của chính nó. Overriding Member Functions class Date { public:	 void Display(); 	 }; class DateTime : public Date { public:	 void Display(); 	 // overrides Date::Display() }; Overriding Member Function... Khi có các hàm cùng tên và cùng danh sách tham số trong base class và derived class thì hàm trong derived class sẽ được thực hiện. 	DateTime dt(12,3,2001,12,30); 	dt.Display(); 	// Display() của DateTime Ta có thể xác định rõ cần sử dụng member function của lớp nào. 	void DateTime::Display() 	{ 	Date::Display(); 	cout << ” ” << hours << ”:” << minutes; 	} Truy nhập vào các thành phần của lớp cơ sở Từ khoá (Access Specifier) private, protected và public xác định khả năng truy nhập tới các thành phần của lớp cơ sở. private: chỉ được truy nhập trong lớp cơ sở protected:chỉ được truy nhập trong lớp cơ sở và lớp dẫn xuất của nó public: được truy nhập ở cả bên ngoài phần định nghĩa lớp. 2. Đa thừa kế Đa thừa kế … class Date { private: int day, month, year; … }; class Time { private: int hours, minutes; … }; class DateTime : public Date, public Time { public: DateTime(int d, int m, int y, int h, int mi) : Date(d,m,y), Time(h, mi) 	{}; … }; Nhập nhằng trong đa thừa kế class Date { void add(int days); }; class Time { void add(int minutes); }; DateTime dt(13,2,1998,23,10); dt.add(3); // báo lỗi dt.Date::add(4); // sử dụng của lớp Date dt.Time::add(5); // sử dụng của lớp Time Nhập nhằng trong đa thừa kế class A { public: void F(); }; class B : public A { …}; class C : public A { …}; class D : public B, public C {}; D d; d.F(); // không dịch 

File đính kèm:

  • pptBài giảng Lập trình hướng đối tượng trong C++ - Phạm Thị Quỳnh - Chương 4 Đối tượng và lớp (Phần 4).ppt