Sự khác nhau giữa việc truy cập phương thức lớp thông qua -> và thông qua :: là gì?Sự khác biệt giữa việc truy cập một phương thức lớp thông qua -> và thông qua :: là gì?
Trả lời
->
là để truy cập các thuộc tính và phương thức của đối tượng được tạo ra. Các ::
là để truy cập các phương pháp tĩnh, hằng số hoặc phương pháp ghi đè.
Để biết thêm thông tin:
::
được sử dụng để truy cập vào các phương pháp tĩnh hoặc các thuộc tính, vì vậy bạn không cần phải tạo một đối tượng của lớp chứa.
->
được sử dụng để truy cập các phương pháp hoặc thuộc tính của đối tượng được tạo ngay.
Sử dụng ->
có nghĩa là các phương pháp truy cập của bạn dựa trên một cá thể (nó giữ trạng thái của đối tượng, chẳng hạn như các biến riêng tư/công khai).
::
là một phương pháp tĩnh, có nghĩa là nó không có baring nếu đối tượng đã hoặc chưa được khởi tạo, nhưng những phương pháp này liên quan đến đối tượng này.
Hình như sau:
class Mustang
{
var $gallons = 12; // gallons
public function getFuel()
{
return $this->gallons;
}
public static function getEngine()
{
return "V8";
}
}
$mustang = new Mustang(); // creating an instance
echo $mustang->getFuel(); // retrieve the fuel (instance, _this_ mustang)
echo Mustang::getEngine(); // echo a stat about Mustangs in general (static)
Nếu bạn có một thể hiện của một "Mustang", mỗi trường hợp có thể (giả định) có một số lượng cụ thể của nhiên liệu để nó (điều này được ví dụ dựa, và có thể truy cập được bằng cách sử dụng ->
).
Nếu bạn muốn một cái gì đó vẫn liên quan đến mustang, nhưng không có baring trên trường hợp cụ thể chính nó, bạn sẽ tham khảo một phương pháp tĩnh (trong trường hợp này tất cả mustang có một V8 trong trường hợp này, biểu tượng của ::
).
Điều Francois nói là chính xác. Nhà điều hành ::
được gọi là Scope Resolution Operator .... và (tin hay không) được gọi là paamayim-nekudotayim. Nó được sử dụng khi truy cập các thành viên tĩnh, không đổi và bị ghi đè của một lớp . Tôi nhấn mạnh lớp vì nó không được sử dụng trên các đối tượng cụ thể . Bạn có thể nghĩ toán tử phân giải phạm vi là meta cho chính lớp đó; nó hoạt động trên chính nó và cha mẹ của nó. (Hãy suy nghĩ về nó, hằng lớp không thuộc về bất kỳ đối tượng cụ thể, do đó bạn sẽ không sử dụng ->
đó mang lại cho chúng ta những gì là ->
? Nó được sử dụng để vận hành của đối tượng và không lớp. Khi bạn tạo một đối tượng cụ thể, bạn có thể truy cập thuộc tính và phương thức của nó bằng cách sử dụng toán tử này. Ví dụ:
$john = new User(); //create the object
$john->age = 10; //accessing an object property
$age = $john->getAge(); //accessing an object method
- 1. Sự khác biệt giữa việc chờ thông báo và CountDownLatch
- 2. Sự khác biệt giữa Thông báo và pynotify là gì?
- 3. Sự khác biệt giữa các thông số truy cập và các công cụ sửa đổi truy cập là gì?
- 4. Sự khác biệt giữa việc gọi phương thức và truy cập thuộc tính
- 5. Sự khác biệt giữa việc chọn một phân lớp thông qua tham số mẫu hoặc tạo biến thành viên
- 6. Sự khác nhau giữa truyền thông điệp và lời gọi phương thức là gì?
- 7. Có sự khác biệt nào giữa việc thiết lập JAVA_HOME thông qua dòng cmd hoặc GUI
- 8. Java: Sự khác biệt giữa <init> và <clinit> là gì?
- 9. sự khác biệt giữa cuộn qua và di chuột qua là gì?
- 10. Sự khác nhau giữa việc đưa @Autowired vào biến và phương thức là gì?
- 11. Sự khác biệt giữa các phương thức lặp và xem là gì?
- 12. RSpec: Sự khác biệt giữa tính năng và thông số yêu cầu là gì?
- 13. Sự khác biệt giữa "Lớp" và "Cấp" là gì?
- 14. Phương thức thiết lập thông qua đối tượng nguyên mẫu hoặc trong hàm tạo, khác biệt?
- 15. Sự khác nhau giữa phương pháp cấu trúc tĩnh và phương thức lớp tĩnh là gì?
- 16. Sự khác biệt chính giữa phương thức mysql và oracle sql là gì?
- 17. SqlBulkCopy: Sự khác nhau giữa việc truyền SqlBulkCopyOptions.UseInternalTransaction và không vượt qua nó là gì?
- 18. Sự khác biệt giữa `>>> some_object` và` >>> in some_object` trong trình thông dịch Python là gì?
- 19. Sự khác biệt giữa INTERSECT và WHERE IN là gì?
- 20. Sự khác biệt giữa dàn diễn viên với BOOL và gửi thông điệp boolValue là gì?
- 21. Gọi phương thức lớp học qua tên lớp và tự
- 22. Sự khác biệt giữa gói android.opengl và javax.microedition.khronos.opengles là gì?
- 23. Truy cập tài sản tĩnh thông qua các phương pháp tĩnh và không tĩnh?
- 24. Các phương thức lớp lặp là gì tiếp theo() và __next __() cho, và sự khác biệt là gì?
- 25. Sự khác biệt giữa thông số -, -X và -XX trong JVM là gì?
- 26. Trong C++, sự khác biệt giữa một phương pháp và một chức năng là những gì
- 27. Sự khác nhau giữa "<>" và "! =" Là gì?
- 28. Sự khác biệt giữa một lớp mẫu và một mẫu lớp là gì?
- 29. Trong Ember.js, sự khác biệt giữa [] và Ember.A ([]) là gì?
- 30. Mercurial: hiệu suất truy cập thông qua ssh và http
có thể trùng lặp [Tham khảo - Biểu tượng này có ý nghĩa gì trong PHP?] (http://stackoverflow.com/questions/ 3737139/reference-what-does-this-symbol-mean-in-php) –
điều này rõ ràng là một dup. Doens't xứng đáng +1 – dynamic