Phương thức tĩnh

Một phần của tài liệu Kỹ thuật lập trình - chương 4 ppt (Trang 32 - 33)

+ Có 2 cách viết phương thức tĩnh:

Cách 1: Dùng từ khoá static đặt trước định nghĩa phương thức

viết bên trong định nghĩa lớp (như phương thưc in() ví dụ cuối của mục 9.1).

Cách 2: Nếu phương thức xây dựng bên ngoài định nghĩa lớp, thì

dùng từ khoá static đặt trước khai báo phương thức bên trong định nghĩa lớp. Chú ý không cho phép dùng từ khoá static đặt trước định nghĩa phương thức viết bên ngoài định nghĩa lóp.

+ Phương thức tĩnh là chung cho cả lớp, nó không lệ thuộc vào một đối tượng cụ thể, nó tồn tại ngay khi lớp chưa có đối tượng nào (xem ví dụ trong mục 9.1).

+ Lời gọi phương thức tĩnh:

Có thể xuất phát từ một đối tượng nào đó (như vẫn dùng khi gọi các phương thức khác)

Có thể dùng tên lớp

Ví dụ xét lớp HDBH trong mục 9.1 và xét các câu lênh: HDBH u, v;

Khi đó để gọi phương thức tĩnh in() có thể dùng một trong các lệnh sau:

u.in(); v.in(); HDBH::in();

+ Vì phương thức tĩnh là độc lập với các đối tượng, nên không thể dùng phương thức tĩnh để xử lý dữ liệu của các đối tượng chủ thể trong lời gọi phương thức tĩnh. Nói cách khác không cho phép truy nhập tới các thuộc tính (trư thuộc tính tĩnh) trong thân phương thức tĩnh. Điều đó cũng đồng nghĩa với việc không cho phép dùng con trỏ this trong phương thức tĩnh.

Ví dụ nếu lập phương thức tĩnh in() để in các thuộc tính của lớp HDBH như sau: class HDBH { private: int shd ; char *tenhang ; double tienban ; static int tshd ;

static double tstienban ; public:

static void in() { cout <<"\n" << tshd; cout <<"\n" << tstienban; cout <<"\n" << tenhang; cout <<"\n" << tienban; } } ; 210 211

thì sẽ bị lỗi, vì trong thân phương thức tĩnh không cho phép truy nhập đến các thuộc tính tenhang và tienban.

Một phần của tài liệu Kỹ thuật lập trình - chương 4 ppt (Trang 32 - 33)