| Tính đa hình | |
|
|
Tác giả | Thông điệp |
---|
canary
Tổng số bài gửi : 52 Join date : 17/03/2010
| Tiêu đề: Tính đa hình 19/3/2010, 10:01 pm | |
| Xin mọi người chỉ giáo giúp cho Người ta định nghĩa Tính đa hình như thế này: "Đa hình là khái niệm luôn đi kèm với kế thừa. Do tính kế thừa, một lớp có thể sử dụng lại các phương thức của lớp khác. Tuy nhiên, nếu cần thiết, lớp dẫn xuất cũng có thể định nghĩa lại một số phương thức của lớp cơ sở. Đó là sự nạp chồng phương thức trong kế thừa. Nhờ sự nạp chồng phương thức này, ta chỉ cần gọi tên phương thức bị nạp chồng từ đối tượng mà không cần quan tâm đó là đối tượng của lớp nào. Chương trình sẽ tự động kiểm tra xem đối tượng là thuộc kiểu lớp cơ sở hay thuộc lớp dẫn xuất, sau đó sẽ gọi phương thức tương ứng với lớp đó. Đó là tính đa hình" HTV cũng ko hỉu lắm về định nghĩa này. Mong các anh chị chỉ giáo thêm. Thanks | |
|
| |
titanotam
Tổng số bài gửi : 140 Join date : 17/03/2010 Age : 37 Đến từ : TPHCM
| Tiêu đề: Re: Tính đa hình 19/3/2010, 10:47 pm | |
| * Tính đa hình (polymorphism): Thể hiện thông qua việc gửi các thông điệp (message). Việc gửi các thông điệp này có thể so sánh như việc gọi các hàm bên trong của một đối tượng. Các phương thức dùng trả lời cho một thông điệp sẽ tùy theo đối tượng mà thông điệp đó được gửi tới sẽ có phản ứng khác nhau. Người lập trình có thể định nghĩa một đặc tính (chẳng hạn thông qua tên của các phương thức) cho một loạt các đối tượng gần nhau nhưng khi thi hành thì dùng cùng một tên gọi mà sự thi hành của mỗi đối tượng sẽ tự động xảy ra tương ứng theo đặc tính của từng đối tượng mà không bị nhầm lẫn. Thí dụ khi định nghĩa hai đối tượng "hinh_vuong" và "hinh_tron" thì có một phương thức chung là "chu_vi". Khi gọi phương thức này thì nếu đối tượng là "hinh_vuong" nó sẽ tính theo công thức khác với khi đối tượng là "hinh_tron". Định nghĩa này trên wiki, mình tin là bạn hiểu. | |
|
| |
canary
Tổng số bài gửi : 52 Join date : 17/03/2010
| |
| |
titanotam
Tổng số bài gửi : 140 Join date : 17/03/2010 Age : 37 Đến từ : TPHCM
| Tiêu đề: Re: Tính đa hình 20/3/2010, 7:56 pm | |
| - HTV đã viết:
- ờ, hỉu chút chút. thanks
giống như khi ta có 2 hàm có tên chung là f mà 2 hàm đó có đầu vào khác nhau như sau: f(x, y) : hàm tính hàm số có đầu vào là 2 biến còn f(x, y, z) : hàm tính hàm số có đầu vào là 3 biến
khi ta gọi hàm tính f(2,3) thì trình biên dịch sẽ tự động hỉu là mình đang muốn gọi tới hàm thứ nhất f(x, y)
đúng hok u ? Bạn đâu thể nào đặt tên là f(x,y,z) cho hàm thứ 2 được nữa, vì f đã đặt tên cho hàm thứ 1 là f(x,y) rồi mà | |
|
| |
titanotam
Tổng số bài gửi : 140 Join date : 17/03/2010 Age : 37 Đến từ : TPHCM
| Tiêu đề: Re: Tính đa hình 20/3/2010, 8:13 pm | |
| - titanotam đã viết:
- HTV đã viết:
- ờ, hỉu chút chút. thanks
giống như khi ta có 2 hàm có tên chung là f mà 2 hàm đó có đầu vào khác nhau như sau: f(x, y) : hàm tính hàm số có đầu vào là 2 biến còn f(x, y, z) : hàm tính hàm số có đầu vào là 3 biến
khi ta gọi hàm tính f(2,3) thì trình biên dịch sẽ tự động hỉu là mình đang muốn gọi tới hàm thứ nhất f(x, y)
đúng hok u ? Bạn đâu thể nào đặt tên là f(x,y,z) cho hàm thứ 2 được nữa, vì f đã đặt tên cho hàm thứ 1 là f(x,y) rồi mà Một ví dụ về tính đa hình động 1. class Nguoi 2. { 3. public: 4. virtual void Chao() // Hàm ảo 5. { 6. cout << "Toi chua biet chao"; 7. }; 8. }; 9. //------------------ 10. class NguoiViet : public Nguoi 11. { 12. public: 13. void Chao() 14. { 15. cout << "Xin chao."; 16. } 17. }; 18. //------------------ 19. class NguoiAnh : public Nguoi 20. { 21. public: 22. void Chao() 23. { 24. cout << "Hello."; 25. } 26. }; 27. //------------------ 28. void main() 29. { 30. Nguoi *n; NguoiViet nv; NguoiAnh na; 31. n = &nv; 32. n->Chao(); // (*) 33. n = &na; 34. n->Chao(); // cùng dòng code voi (*) nhưng lại cho kết quả khác 35. } | |
|
| |
canary
Tổng số bài gửi : 52 Join date : 17/03/2010
| Tiêu đề: Re: Tính đa hình 20/3/2010, 10:08 pm | |
| bây giờ thì HTV đã hỉu. Thank you, titanotam. | |
|
| |
ngocthai
Tổng số bài gửi : 60 Join date : 17/03/2010
| Tiêu đề: Re: Tính đa hình 22/3/2010, 5:37 pm | |
| | |
|
| |
canary
Tổng số bài gửi : 52 Join date : 17/03/2010
| Tiêu đề: Re: Tính đa hình 22/3/2010, 7:12 pm | |
| | |
|
| |
Sponsored content
| Tiêu đề: Re: Tính đa hình | |
| |
|
| |
| Tính đa hình | |
|