Công khai, riêng tư và được bảo vệ trong lập trình hướng đối tượng là gì?Công khai, riêng tư và được bảo vệ trong lập trình hướng đối tượng là gì?
Trả lời
Chúng là các công cụ sửa đổi truy cập và giúp chúng tôi thực hiện Encapsulation (hoặc ẩn thông tin). Chúng cho trình biên dịch biết các lớp khác nên có quyền truy cập vào trường hoặc phương thức được xác định.
private
- Chỉ lớp hiện tại mới có quyền truy cập vào trường hoặc phương pháp.
protected
- Chỉ lớp và lớp con hiện tại (và đôi khi cùng các lớp gói) của lớp này sẽ có quyền truy cập vào trường hoặc phương pháp.
public
- Bất kỳ lớp nào cũng có thể tham chiếu đến trường hoặc gọi phương thức.
Giả định các từ khóa này được sử dụng như một phần của khai báo trường hoặc phương thức trong định nghĩa lớp.
lưu ý rằng trong các thành viên java của cùng một gói có thể truy cập các thành viên được bảo vệ –
Có, và Java cũng có một công cụ sửa đổi truy cập thứ tư là chuỗi rỗng. Không cung cấp bất kỳ công cụ sửa đổi truy cập nào sẽ cho phép truy cập từ bất kỳ lớp cấp gói nào. –
Tôi thích phần "biên dịch", bởi vì hầu hết các ngôn ngữ tôi biết tất cả các hàm/lớp có thể dễ dàng truy cập trong thời gian chạy ví dụ thông qua các phản xạ trong .NET. Vì vậy, tôi có xu hướng nói rằng, các công cụ sửa đổi truy cập này về cơ bản chỉ là sự trợ giúp cho các lập trình viên để hướng dẫn các lập trình viên khác làm việc trên/bằng cùng một mã bằng cách che giấu những thứ nhất định. – merkuro
Mục công khai là mục công khai có thể truy cập được từ bất kỳ lớp nào khác. Bạn chỉ cần biết đối tượng đó là gì và bạn có thể sử dụng toán tử dấu chấm để truy cập nó. Được bảo vệ có nghĩa là một lớp và các lớp con của nó có quyền truy cập vào biến, nhưng không phải bất kỳ lớp nào khác, chúng cần sử dụng trình getter/setter để làm bất cứ điều gì với biến đó. Một phương tiện riêng mà chỉ có lớp đó có quyền truy cập trực tiếp vào biến, mọi thứ khác cần một phương thức/hàm để truy cập hoặc thay đổi dữ liệu đó. Hi vọng điêu nay co ich.
Chúng không thực sự là khái niệm mà là từ khóa cụ thể có xu hướng xảy ra (với ngữ nghĩa hơi khác nhau) trong các ngôn ngữ phổ biến như C++ và Java.
Về cơ bản, chúng có nghĩa là để cho phép một lớp hạn chế quyền truy cập vào các thành viên (các trường hoặc hàm). Ý tưởng là loại ít hơn được phép truy cập trong một loại khác, ít phụ thuộc hơn có thể được tạo ra. Điều này cho phép đối tượng truy cập được thay đổi dễ dàng hơn mà không ảnh hưởng đến các đối tượng tham chiếu đến nó.
Nói chung, công khai có nghĩa là mọi người đều được phép truy cập, phương tiện riêng tư chỉ các thành viên của cùng một lớp được phép truy cập và được bảo vệ nghĩa là thành viên của các lớp con cũng được phép. Tuy nhiên, mỗi ngôn ngữ lại bổ sung thêm những thứ của riêng nó vào điều này. Ví dụ, C++ cho phép bạn kế thừa không công khai. Trong Java, cũng có cấp truy cập mặc định (gói) và có các quy tắc về các lớp nội bộ, v.v.
Để tổng hợp, trong lập trình hướng đối tượng, mọi thứ được mô hình hóa thành các lớp và đối tượng. Các lớp học có chứa các đặc tính và phương pháp. Từ khóa công cộng, riêng tư và được bảo vệ được sử dụng để chỉ định quyền truy cập vào các thành viên này (thuộc tính và phương pháp) của một lớp từ các lớp khác hoặc các .dll khác hoặc thậm chí các ứng dụng khác.
Tất cả ba là công cụ sửa đổi truy cập và từ khóa được sử dụng trong một lớp học. Mọi thứ được khai báo ở nơi công cộng có thể được sử dụng bởi bất kỳ đối tượng nào trong lớp hoặc bên ngoài lớp, chỉ có thể sử dụng các biến riêng tư trong lớp và không thể thay đổi thông qua truy cập trực tiếp.). Bất cứ điều gì được xác định trong phần được bảo vệ có thể được sử dụng bởi lớp và lớp dẫn xuất của chúng.
Những Riêng tư, Công khai và Được bảo vệ này được gọi là các thông số truy cập.
Trong "Công khai", tất cả các thành viên bên trong hoặc bên ngoài lớp đều truy cập các biến.
Trong thành viên riêng tư duy nhất trong lớp có thể truy cập các biến.
Trong "Được bảo vệ", tất cả các thành viên trong lớp và các thành viên của lớp (Lớp phụ) có nguồn gốc từ lớp Gốc có thể truy cập các biến.
- 1. Được bảo vệ và hủy riêng tư
- 2. Các lớp C++ (công khai, riêng tư và được bảo vệ)
- 3. biến riêng tư hoặc được bảo vệ?
- 4. Khối Riêng tư/Được bảo vệ trong Ruby?
- 5. Lịch sử của các công cụ sửa đổi kiểm soát truy cập như công khai/riêng tư/được bảo vệ
- 6. R và hướng đối tượng lập trình lập trình hướng
- 7. Đảm bảo đầu vào của các phương thức riêng tư/được bảo vệ?
- 8. Phạm vi tư nhân, bảo vệ, và công chúng
- 9. Lập trình hướng đối tượng
- 10. Phương thức "công khai/được bảo vệ/riêng tư" được triển khai như thế nào và tôi có thể mô phỏng nó như thế nào?
- 11. Lập trình hướng đối tượng trong android
- 12. Lập trình hướng đối tượng trong Java
- 13. Biến nào không được công khai hoặc được bảo vệ được khai báo là?
- 14. Tôi có thể làm gì với biến tĩnh được bảo vệ/riêng tư?
- 15. Doxygen: ẩn phương pháp riêng tư/được bảo vệ ... và mẹo
- 16. keytool - xem các khóa công khai và riêng tư
- 17. Khi nào chúng ta nên xem xét sử dụng riêng tư hoặc được bảo vệ?
- 18. Logic lập trình hướng đối tượng
- 19. Quan điểm thực tế về riêng tư và công khai
- 20. Tuyên bố thuộc tính lớp: riêng tư và công khai
- 21. lập trình hướng đối tượng android
- 22. Một số câu hỏi về lớp trừu tượng với các nhà xây dựng riêng, công cộng và được bảo vệ
- 23. Nếu người xây dựng của một lớp bên trong riêng tư được công bố công khai hay riêng tư?
- 24. Suy nghĩ đằng sau sự phát triển của Lập trình hướng đối tượng là gì?
- 25. Làm thế nào để quyết định xem một phương pháp sẽ là riêng tư, được bảo vệ, nội bộ hay công khai?
- 26. Trường C# được bảo vệ thành riêng tư, thêm thuộc tính - tại sao?
- 27. Bảo vệ nội dung công khai/trong ứng dụng Rails
- 28. Lập trình và giao dịch hướng đối tượng
- 29. respond_to? và phương pháp được bảo vệ
- 30. không thể xác định hàm tạo như được bảo vệ hoặc riêng tư! tại sao?
+1, một trong những điều tôi thấy khó có thể bị bẻ khóa – fig
Tôi có nên thêm cuối cùng không? –