Logo | |
|
| phân biệt private và public và protected | |
| Tác giả | Thông điệp |
---|
Sakura
Thú CƯng :
Số bài viết : 1124 Điểm : 1688 Được cảm ơn : 35 Ngày sinh : 03/11/1990 Tham gia ngày : 16/03/2010 Tuổi : 34 Đến từ : Bình Dương Ngề nghiệp : IT Student
| Tiêu đề: phân biệt private và public và protected 20/7/2010, 15:30 | |
| trong C++ thì class có 3 thuộc tính truy cập là private, protected và public. về công dụng thì sách vở nói nhiều rồi, mình xin tóm lại vài câu như sau: + private: thuộc tính, phương thức nào mang nhãn private này thì chỉ được phép truy xuất (gọi) từ các hàm thành viên của lớp đó thôi. thường thì người ta sử dụng private nhằm mục đích là che giấu thông tin (cụ thể hơn là các thuộc tính) của 1 lớp tạo nên tính đóng gói cho lớp - đối tượng. người ta sẽ không cần biết các thông tin private này, mà chỉ quan tâm đến các thông tin public mà người thiết kế hướng đối tượng cho phép xem. và xử lý đối tượng thông qua các phương thức public này. cụ thể hơn, các bạn có thể xem thêm trong giáo trình của cô hoặc bất kỳ, sẽ nói rõ hơn cho các bạn. + public: ngược lại với private - che giấu, thì public này có vẻ thoải mái hơn, nó cho phép ở bất kỳ nơi nào cũng có thể gọi đến các thuộc tính và phương thức mang nhãn public này, thường thì các phương thức đều có nhãn là public, trừ các trường hợp đặc biệt tuỳ vào mục đích của người lập trình mà nó có thể mang nhãn private hay protected. + protected: chỉ đc truy xuất từ chính lớp đó và các lớp kế thừa từ nó (sẽ nói rõ hơn khi các bạn tiếp xúc đến phần Thừa kế) và sau đây là đoạn code minh hoạ 2 thuộc tính truy cập của lớp là private và public: #include #include using namespace std; class Person1 {
private: char ten[30]; unsigned tuoi; }; class Person2 {
public: char ten[30]; unsigned tuoi; }; int main() { Person1 p1; Person2 p2; p1.tuoi = 20; //Error 1 error C2248: 'Person1::tuoi' : cannot access private member declared in class 'Person1' d:\bai tap c++\thuoctinhtruycap1\thuoctinhtruycap1\tttc.cpp 25 1 ThuocTinhTruyCap1
p2.tuoi = 20; return 0; }
chúng ta có 2 lớp person1 và person2, cả 2 đều có 2 thuộc tính ten và tuoi. lớp person1, 2 thuộc tính này mang nhãn private, còn lớp person2 thì là public, như đã nói ở trên thì nhãn public sẽ được truy xuất bất kỳ nơi đâu (cụ thể ở đây là hàm main), còn private thì không thể. ở trong hàm main chương trình này, ta khai báo 2 đối tượng: p1 thuộc lớp person1, p2 thuộc lớp person2, và ta thử gọi p1.tuoi = 20; nó xuất ra cái thông báo, dịch ra đơn giản là: không thể truy cập đến các thành viên private đc khai báo trong lớp person1. đó là do ta không thể nào đụng chạm trực tiếp đến các thành viên private đc. còn ta gọi p2.tuoi = 20 thì chẳng sao, bởi vì thuộc tính tuổi của đối tượng p2 (thuộc lớp person2) là public, nên ta thoải mái gọi như vậy. và có 1 vấn đề nho nhỏ xảy ra, trong lớp person1, các thuộc tính mang nhãn private - ko đc đụng đến, mà giờ ta muốn đụng đến thì sao? có 1 cách là viết cho nó 1 cái phương thức cập nhật (gán - Set) và 1 cái phương thức truy xuất (lấy - Get) là OK thôi, xem đoạn ct sau, các bạn sẽ rõ: #include #include using namespace std; class Person1 { private: char ten[30]; unsigned tuoi; public: void SetTuoi(unsigned tuoi) { this->tuoi = tuoi; } unsigned GetTuoi() { return this->tuoi; } }; class Person2 { public: char ten[30]; unsigned tuoi; }; int main() { Person1 p1; Person2 p2; p1.SetTuoi(30); cout<<"Tuoi Cua p1: "<cout<<"\nTuoi Cua p2: "< _getch(); return 0; }
bằng cách thông qua 2 phương thức public Get, Set, ta đã có thể thoái mái truy nhập vào các thành phần private rồi, còn cái ten, các bạn tự thiết kế cho nó đi nha! Mình bỏ cả buổi ra để viết ra những lời này, tuy còn chưa đủ nhưng nhiêu đó là cũng đủ cho các bạn muốn có cái nhìn đầu tiên về Class rồi đó! Phần còn lại là của các bạn thôi! |
| | | Sakura
Thú CƯng :
Số bài viết : 1124 Điểm : 1688 Được cảm ơn : 35 Ngày sinh : 03/11/1990 Tham gia ngày : 16/03/2010 Tuổi : 34 Đến từ : Bình Dương Ngề nghiệp : IT Student
| Tiêu đề: Re: phân biệt private và public và protected 20/7/2010, 15:33 | |
| Bị Lỗi Rồi! trong C++ thì class có 3 thuộc tính truy cập là private, protected và public. về công dụng thì sách vở nói nhiều rồi, mình xin tóm lại vài câu như sau: + private: thuộc tính, phương thức nào mang nhãn private này thì chỉ được phép truy xuất (gọi) từ các hàm thành viên của lớp đó thôi. thường thì người ta sử dụng private nhằm mục đích là che giấu thông tin (cụ thể hơn là các thuộc tính) của 1 lớp tạo nên tính đóng gói cho lớp - đối tượng. người ta sẽ không cần biết các thông tin private này, mà chỉ quan tâm đến các thông tin public mà người thiết kế hướng đối tượng cho phép xem. và xử lý đối tượng thông qua các phương thức public này. cụ thể hơn, các bạn có thể xem thêm trong giáo trình của cô hoặc bất kỳ, sẽ nói rõ hơn cho các bạn. + public: ngược lại với private - che giấu, thì public này có vẻ thoải mái hơn, nó cho phép ở bất kỳ nơi nào cũng có thể gọi đến các thuộc tính và phương thức mang nhãn public này, thường thì các phương thức đều có nhãn là public, trừ các trường hợp đặc biệt tuỳ vào mục đích của người lập trình mà nó có thể mang nhãn private hay protected. + protected: chỉ đc truy xuất từ chính lớp đó và các lớp kế thừa từ nó (sẽ nói rõ hơn khi các bạn tiếp xúc đến phần Thừa kế) và sau đây là đoạn code minh hoạ 2 thuộc tính truy cập của lớp là private và public: #include #include using namespace std; class Person1 { private:
char ten[30];
unsigned tuoi; }; class Person2 { public:
char ten[30];
unsigned tuoi; }; int main() {
Person1 p1;
Person2 p2;
p1.tuoi = 20; //Error 1 error C2248: 'Person1::tuoi' : cannot access private member declared in class 'Person1' d:\bai tap c++\thuoctinhtruycap1\thuoctinhtruycap1\tttc.cpp 25 1 ThuocTinhTruyCap1
p2.tuoi = 20;
return 0; } chúng ta có 2 lớp person1 và person2, cả 2 đều có 2 thuộc tính ten và tuoi. lớp person1, 2 thuộc tính này mang nhãn private, còn lớp person2 thì là public, như đã nói ở trên thì nhãn public sẽ được truy xuất bất kỳ nơi đâu (cụ thể ở đây là hàm main), còn private thì không thể. ở trong hàm main chương trình này, ta khai báo 2 đối tượng: p1 thuộc lớp person1, p2 thuộc lớp person2, và ta thử gọi p1.tuoi = 20; nó xuất ra cái thông báo, dịch ra đơn giản là: không thể truy cập đến các thành viên private đc khai báo trong lớp person1. đó là do ta không thể nào đụng chạm trực tiếp đến các thành viên private đc. còn ta gọi p2.tuoi = 20 thì chẳng sao, bởi vì thuộc tính tuổi của đối tượng p2 (thuộc lớp person2) là public, nên ta thoải mái gọi như vậy. và có 1 vấn đề nho nhỏ xảy ra, trong lớp person1, các thuộc tính mang nhãn private - ko đc đụng đến, mà giờ ta muốn đụng đến thì sao? có 1 cách là viết cho nó 1 cái phương thức cập nhật (gán - Set) và 1 cái phương thức truy xuất (lấy - Get) là OK thôi, xem đoạn ct sau, các bạn sẽ rõ: #include #include using namespace std; class Person1 { private:
char ten[30];
unsigned tuoi; public: void SetTuoi(unsigned tuoi) {
this->tuoi = tuoi; } unsigned GetTuoi() {
return this->tuoi; } }; class Person2 { public:
char ten[30];
unsigned tuoi; }; int main() {
Person1 p1;
Person2 p2;
p1.SetTuoi(30);
cout<<"Tuoi Cua p1: "<
p2.tuoi = 20;
cout<<"\nTuoi Cua p2: "<
_getch();
return 0; } bằng cách thông qua 2 phương thức public Get, Set, ta đã có thể thoái mái truy nhập vào các thành phần private rồi, còn cái ten, các bạn tự thiết kế cho nó đi nha! Mình bỏ cả buổi ra để viết ra những lời này, tuy còn chưa đủ nhưng nhiêu đó là cũng đủ cho các bạn muốn có cái nhìn đầu tiên về Class rồi đó! Phần còn lại là của các bạn thôi!
CHÚC MỌI NGƯỜI THÀNH CÔNG! |
| | | tkhking
Member Năng Động
Thú CƯng :
Số bài viết : 114 Điểm : 135 Được cảm ơn : 1 Ngày sinh : 18/03/1990 Tham gia ngày : 01/07/2010 Tuổi : 34 Đến từ : Óc Trâu Lấy Ra Ngề nghiệp : Student Chăm ngôn : King
| Tiêu đề: Re: phân biệt private và public và protected 20/7/2010, 20:35 | |
| diễn đàn bị sao rồi nè chán quá đi thôi |
| | | hoacodai
Thú CƯng :
Số bài viết : 15 Điểm : 19 Được cảm ơn : 0 Ngày sinh : 12/04/1990 Tham gia ngày : 20/07/2010 Tuổi : 34 Đến từ : Taiwan
| Tiêu đề: Re: phân biệt private và public và protected 21/7/2010, 13:24 | |
| Ông Admin này làm ăn chán quá! phải lo fix thường xuyên đi chớ, để dzậy anh em bất mãn quá à nha! |
| | | Sakura
Thú CƯng :
Số bài viết : 1124 Điểm : 1688 Được cảm ơn : 35 Ngày sinh : 03/11/1990 Tham gia ngày : 16/03/2010 Tuổi : 34 Đến từ : Bình Dương Ngề nghiệp : IT Student
| Tiêu đề: Re: phân biệt private và public và protected 21/7/2010, 13:26 | |
| Acc! Dzô nhầm nick, anh em thông cảm giùm he! hichic! |
| | | Sponsored content
| Tiêu đề: Re: phân biệt private và public và protected | |
| |
| | | | phân biệt private và public và protected | |
|
Trang 1 trong tổng số 1 trang | |
Similar topics | |
|
| Permissions in this forum: | Bạn không có quyền trả lời bài viết
| |
| |
| Latest topics | » Renew forum by Mr.Cuong 4/4/2015, 08:10
» Diễn đàn bỏ lâu vậy mà vẫn không die! by theanhkkt 1/4/2015, 08:03
» Phân biệt giải thuật tìm kiếm sâu và sâu dần... by mailoc 20/12/2014, 15:12
» Toàn bộ giáo trình bên mạng của Nhất Nghệ đây (Link mediafire) Hot down nhanh kẻo die by mrchikoy 11/6/2013, 10:34
» [Thông báo] Còn ai nhớ page này by jetvhs 10/6/2013, 13:45
» PHI HÀNH ĐOÀN MỚI LÊN ISS by Sakura 10/6/2013, 00:41
» LAPTOP ASUS TAICHI VỚI MÀN HÌNH FULL HD KÉP by Mr.Cuong 25/5/2013, 12:04
» Video tự học C# từ A->Z by Sakura 7/5/2013, 16:11
» Cơ Bản Ép Kiểu Trong Java by Sakura 7/5/2013, 16:09
» THÔNG BÁO VỀ VIỆC DỰ KIẾN KIỂM TRA NĂNG LỰC NGOẠI NGỮ - TIN HỌC THÁNG 07/2012 by Sakura 7/5/2013, 16:09
» Mấy anh chị cho em xin cái đồ án mẫu !! by huutuan_se7en 4/1/2013, 22:37
» Làm thế nào để tạo ra 1 form đăng nhập bằng C Sharp by Sakura 14/9/2012, 18:09
» Tổ chức đi du lịch Vũng Tàu 2 ngày 1 đêm by o0ovioletstaro0o 15/8/2012, 20:51
» Những hình ảnh báo cáo tốt nghiệp khóa 2008 -2012 by hotboy 10/8/2012, 13:35
» Banner xấu quá! @@ by con_ca_nho90 25/7/2012, 19:43
» mấy anh chị cho em khóa 12 hỏi cái này by con_ca_nho90 25/7/2012, 19:40
» Hướng dẫn - Làm website bằng Google Site; Đăng ký và sử dụng Google Apps by Già Làng 18/6/2012, 14:20
» Tài liệu ôn thi QTDA CNTT by Sakura 15/6/2012, 15:38
» học phí, lệ phí thi lại học lại năm học 2012 - 2013 update :P by o0ovioletstaro0o 4/6/2012, 14:36
» [11TH02][QTDACNTT] - Tài liệu full by Sakura 15/5/2012, 08:13
|
|