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

Hướng đối tượng Tính thừa kế

11 372 5
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 đề Tính thừa kế
Thể loại tiểu luận
Định dạng
Số trang 11
Dung lượng 102,5 KB

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

Nội dung

Hướng đối tượng Tính thừa kế

Trang 1

I Cách xây dựng

Tính thừa kế là khả năng sử dụng lại dữ liệu và phương thức của một lớp khi khai báo một lớp mới.

Lớp cha (base classs):

class animal

{ public:

void eat(void);

void sleep(void);

void breathe(void);

};

Lớp con (derived class):

class snake : public animal { int fench;

int venomous;

public:

void bite (animal sprey) } anaconda ;

Lớp con (derived class):

class mouse : public animal

{ int tail;

int ears;

int leg;

public:

void run(void);

} jerry ;

Quan

hệ

IS-A

Trang 2

Truy cập các thành viên của lớp cha

Lớp con được tham chiếu đến các dữ liệu

và phương thức của lớp cha.

Lớp cha (và do đó các đối tượng của nó) không có quyền truy cập đến lớp con.

Tùy vào việc khai báo quyền truy cập

(public | private | protected) của các thành phần ở lớp cha mà có sự khác nhau về

khả năng truy cập các thành phần này

Trang 3

Truy cập các thành viên của lớp cha

None None

X private

None X

X protected

X X

X public

Access right from other objects

Access right from members of derived class

Access right from its

members Permission label

Trang 4

Các kiểu thừa kế

 Khai báo:

class class_name: inheritance_type base_class {

private: data and function list public: data and funtion list protected: ……

} object_list;

Inheritance_type có thể là public, private hoặc

protected

Không được thừa kế private

protected private

protected protected

protected private

public public

Thừa kế kiểu protected

Thừa kế kiểu private

Thừa kế kiểu public

Thành viên của

lớp cha là

Trang 5

II Khi có phương thức xây dựng

và phương thức hủy bỏ (1)

Constructor của lớp cơ sở được gọi đầu

tiên, sau đó constructor thích hợp của lớp con mới được gọi

Ví dụ: class Base

{

protected: int a;

public: Base(void) {a=0;} //default constructor

Base ( int c) {a=c;} // one argument constructor }

class Derived

{

public: Derived():Base(){} //default constructor

Derived (int c):Base(c) {} //one argument constructor }

Chú ý dấu

“:” ở đây

Trang 6

II Khi có phương thức xây dựng

và phương thức hủy bỏ (2)

Destructor của lớp con được gọi đầu tiên, sau đó constructor của lớp cha mới được gọi

Nếu constructor của lớp con không làm gì hoặc không có thêm các hàm thành viên nào được bổ sung trong lớp con thì

destructor của lớp con có thể là một hàm trống.

Trang 7

Các lớp container (1)

Khi một lớp X được dẫn xuất public từ một lớp Y, ta nói X là một Y (quan hệ ISA)

Ngược lại khi lớp X có chứa một thành

viên của lớp khác (lớp Y) ta nói X chứa Y hay nói cách khác X là một container

Ví dụ:

class X

{ public: Y abc;

Z def;}

X là container chứa một thành viên thuộc lớp Y

X là container chứa một thành viên thuộc lớp Z

Trang 8

Các lớp container (2)

class engine

{ private: int num; //number of turbofan

public: engine (int s) {num=s;}

};

class Jet

{private: int jt;

engine eobj;

public: Jet(int x,int y): eobj (y) {jt=x}

}

Jet là một lớp container chứa member eobj thuộc lớp engine

Dấu “:” này để báo cho biết lớp nào sẽ được gọi

constructor này được dự kiến sẽ

có gọi tới lớp engine

Trang 9

III ĐA THỪA KẾ (Kế thừa bội)

Đa thừa kế là tiến trình tạo một lớp mới từ

hai lớp cha.

Cú pháp:

class base1

{public: void a(void);}

class base2

{public: void b(void);}

{public: void c(void);

} derive_object;

Liệt kê danh sách hai lớp cha cách nhau bởi dấu phẩy

Đối tượng của lớp thừa kế này sẽ được thừa kế mọi

thành viên public và protected của lớp base1

và base2

Trang 10

IV Phương thức thiết lập với lớp kế thừa bội

(constructor của lớp đa thừa kế)

Cú pháp:

class base1

{public:

base1();

base1(type v); // các constructor của lớp base1

void a(void);}

class base2

{public:

base2(); //constructor của lớp base2

void b(void);}

class derived : public base1,base2

{public:

derived(): base1(),base2();//constructor của lớp con

void c(void);

} derive_object;

Khi derived_object được khởi tạo thì các

constructor được gọi theo thứ tự:

2 constructor của các lớp cha theo như thứ

tự được liệt kê

3 constructor của bản thân lớp này

Ví dụ 17

Ví dụ 18

Trang 11

V Thiết kế theo hướng đối tượng

Ngày đăng: 13/11/2012, 17:01

TỪ KHÓA LIÊN QUAN

w