Phương pháp của đối tượng có thể truy cập thuộc tính được bảo vệ của đối tượng khác của cùng một lớp không?Phương pháp truy cập thuộc tính được bảo vệ của đối tượng khác của cùng một lớp
Tôi đang mã hóa bằng PHP và tôi vừa phát hiện ra rằng thuộc tính được bảo vệ của đối tượng được phép truy cập bằng một phương thức của cùng một lớp ngay cả khi không thuộc cùng một đối tượng.
Trong ví dụ, lúc đầu, bạn sẽ nhận được "3" ở đầu ra - vì hàm readOtherUser sẽ truy cập thành công giá trị - và sau đó lỗi PHP gây tử vong sẽ xảy ra - vì chương trình chính sẽ không thành công truy cập cùng một giá trị.
<?php
class user
{
protected $property = 3;
public function readOtherUser()
{
$otherUser = new user();
print $otherUser->property;
}
}
$user = new user();
$user->readOtherUser();
print $user->property;
?>
Đây có phải là lỗi PHP hay là hành vi dự định (và tôi sẽ phải học lại khái niệm này ... :)) (và có tham chiếu đến thực tế) không? Làm thế nào nó được thực hiện trong các ngôn ngữ lập trình khác?
Cảm ơn!
NB. Ruby's ['private'] (http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_classes.html#s4) hoạt động như mô tả - một phương thức riêng không thể được gọi trên một cá thể khác. – outis