Class có phải là 1 kiểu dữ liệu và Public, Private và Protected là gì?

Xin chào mọi người
Mình là tay mơ đang học về C++, trong series bài học C++ của anh Đạt (daynhauhoc) có bài nói về class, mình có xem nhưng vẫn thấy mơ hồ lắm, mong mọi người giúp :

  • Class có phải là 1 kiểu dữ liệu ?
  • Trong class có 3 thứ gọi là Public, Private và Protected, ý nghĩa của nó là gì và khi nào thì mình phải dùng Public, khi nào dùng Private, và khi nào dùng Protected ?

Xin cảm ơn.

1 Like

bạn nên tìm hiểu về lập trình hướng đối tượng (object oriented programming[OOP]) sẽ hiểu class là gì ?
Từ đó sẽ biết được mục đích của Public, Private và Protected dùng để làm gì ?
Bạn có thể tìm hiểu lập trình hướng đối tượng tại Thế nào là lập trình hướng đối tượng OOP?Tài liệu lập trình hướng đối tượng?.

chúc bạn vui vẻ khi tìm hiểu về lập trình

2 Likes

Theo em biết thì class là 1 kiểu dữ liệu trừu tượng của C++ dùng gộp các kiểu dữ liệu cơ bản của C++ thành 1 kiểu dữ liệu mới theo nhu cầu người dùng

Public là kiểu dữ liệu được khai báo thuộc loại công cộng, được truy nhập và sử dụng bời tất cả các hàm thuộc hay không thuộc đối tượng đó. Ở đâu cũng dùng được
Private là kiểu dữ liệu được khai báo thuộc loại riêng tư, chỉ cho phép truy nhập và sử dụng bởi các hàm thành viên thuộc lớp đó, Các hàm bên ngoài không thuộc lớp đối tượng đó thì không được phép truy nhập và sử dụng. Private thường được dùng cho các hàm tiện ích chỉ cần dùng đến ở bên trong phạm vi lớp bởi các hàm thành viên khác
Protected là thì em chưa đọc kĩ, chỉ hiểu khi khai báo kiểu này thì chỉ có các hàm của đối tượng đó và các hàm của class bạn (kế thừa class của đối tượng đó ) được sử dụng

3 Likes

mình nghĩ bạn hiểu như vậy không đúng lắm. Nếu trong class không có kiểu dữ liệu cơ bản thì không phải là class à ?

Vẫn là class. Mình mới học nên toàn dùng với dữ liệu cơ bản. Có google ra được class https://vi.wikipedia.org/wiki/Lập_trình_hướng_đối_tượng#L.E1.BB.9Bp_.28class.29

Mình học Java và mình có thể nói sơ qua như sau: :smile:
Mỗi đối tượng được thể hiện qua một class. vd 1 con chó là một đối tượng được thể hiện qua 1 class tên là CHO. Trong class CHO này có các thuộc tính màu lông, chiều cao, cân nặng… Một class có thể tạo ra nhiều đối tượng (nhiều con chó khác nhau). Mỗi đối tượng có các thuộc tính khác nhau (mỗi con chó có màu lông, chiều cao, cân nặng khác nhau). Các thuộc tính, phương thức trong một lớp đều có access modifier là public/protected/“default”/private.

  • public: có thể truy cập từ bất kỳ đâu.
  • protected: được phép truy cập từ class chứa thuộc tính đó và class dẫn xuất (class con) kế thừa từ lớp cơ sở (class cha).
  • private: chỉ được truy cập từ class chứa thuộc tính đó.

Nên dùng private và protected để tránh bị truy cập trực tiếp từ bên ngoài. cũng giống như tiền nhà bạn thì bạn nên cất đi không để người ngoài dùng =)) Để truy cập các thuộc tính private thì lúc này dùng đến các phương thức get/set.

4 Likes

Nếu hiểu class 1 một kiểu dữ liệu như struct thì có lẽ sẽ đúng chứ, class mở rộng nhiều thứ hơn so với struct

1 Like

Cảm ơn mọi người nhiều lắm, mình đã có chút khái niệm rồi. Mình sẽ tiếp tục tìm hiểu

Huy code bằng cái gì nhìn highlight đẹp thế nhỉ?

chắc là Sublime text

Mình dùng IntelliJ IDEA. (Có tinh chỉnh lại màu sắc). Trước kia dùng eclipse và Netbeans nhưng sau thấy thằng này hay hơn :smiley:

1 Like

Sao nó giống PHPStorm mình đang dùng :smiley:

1 Like

cùng “hãng sx” hết mà :smile: PyCharm-IntelliJ IDEA-PHPStorm-AndroidStudio… giống giống nhau cả

2 Likes

:smiley: vậy ko để ý


Post must be at least 20 characters

1 Like

https://www.jetbrains.com/ Có đầy đủ :smile:

2 Likes

Thích bộ màu này nhìn nó nhã mắt mà trong Android studio không có. Huy có file custom không share mình với.

Mình cũng tự edit thôi :smile: vừa export ra file custom đây: https://drive.google.com/file/d/0B0PQXRyV7ZBrTnVmcHRWeTdZRUU/view?usp=sharing

mình thấy bài ở blog này cũng nói về class và object. có một ví dụ rất cụ thể bạn có thể tham khảo
https://mrhai-blog.blogspot.com/2016/05/phan-biet-class-va-object-trong-java.html

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?