Hàm tĩnh có thể truy cập các biến không tĩnh trong php không?

Lỗi biến không tĩnh không thể được tham chiếu từ ngữ cảnh tĩnh trong Java hầu hết người mới bắt đầu gặp phải tại thời điểm biên dịch chương trình Java. Lý do xảy ra lỗi này là do họ sử dụng biến thành viên không tĩnh trong phương thức main[]. Vì phương thức main[] trong Java là một phương thức tĩnh và nó được gọi tự động nên chúng ta không cần tạo đối tượng để gọi nó. Để hiểu lỗi, trước tiên chúng ta nên hiểu phương thức tĩnh và không tĩnh trong Java

Phương thức tĩnh

Trong Java, các phương thức công khai thuộc về một thể hiện của lớp nhưng nếu chúng ta nói về phương thức tĩnh, thì chúng thuộc về một lớp chứ không phải một thể hiện của một lớp. Không cần tạo một thể hiện của lớp để gọi một phương thức tĩnh. Thành viên tĩnh chỉ có thể truy cập thành viên dữ liệu tĩnh và có thể thay đổi giá trị của nó

Phương pháp không tĩnh

Tất cả các phương thức không có từ khóa tĩnh trước tên phương thức được gọi là Phương thức không tĩnh. Không cần tạo một thể hiện của lớp để truy cập phương thức tĩnh và biến tĩnh. Các phương thức không tĩnh được sử dụng liên kết động hoặc thời gian chạy. Không giống như phương thức tĩnh, chúng ta có thể ghi đè phương thức không tĩnh

Hãy tạo một chương trình Java và tạo ra lỗi tương tự

Trong ví dụ sau, chúng ta đã khai báo một biến private number kiểu int trước phương thức main[]. Trong phương thức main[], chúng ta đang cố tăng số lên 1. Cần lưu ý rằng phương thức main[] là một phương thức tĩnh và biến không phải là tĩnh. Khi chúng tôi biên dịch chương trình trên, chúng tôi gặp lỗi tương tự như chúng tôi đã hiển thị bên dưới

Ví dụ tĩnh1. java

đầu ra

Bây giờ, hãy khai báo biến số là tĩnh và biên dịch mã. Lưu ý rằng, cả biến và phương thức main[] đều là tĩnh

Ví dụ tĩnh2. java

đầu ra

Chương trình biên dịch và chạy thành công

Mỗi thể hiện của một biến không tĩnh có một giá trị khác nhau và được tạo khi toán tử new[] khởi tạo một thể hiện của một đối tượng. Các biến tĩnh được tạo hoặc khởi tạo khi lớp tải vào JVM

Chúng ta cần một thể hiện của một đối tượng để gọi biến không tĩnh. Chúng ta có thể tạo nhiều đối tượng bằng cách đưa ra các giá trị khác nhau cho biến thể hiện hoặc không tĩnh đó

Ví dụ tĩnh3. java

đầu ra

Trong chương trình trên, ba đối tượng var1, var2, var3 được tạo cho biến lớp và gán ba giá trị khác nhau 12, 13, 14 cho các đối tượng var1, var2 và var3 tương ứng. Bây giờ, thuộc tính số của mỗi đối tượng có giá trị số nguyên riêng. Khi chúng ta cố gắng tăng giá trị của thuộc tính số bằng cách gọi phương thức increment[], trình biên dịch không hiểu giá trị của số mà phương thức sẽ tăng giá trị. Trình biên dịch phải đối mặt với lỗi mơ hồ và đưa ra lỗi thời gian biên dịch biến không tĩnh không thể được tham chiếu từ ngữ cảnh tĩnh

Giải pháp cho Lỗi

Có một cách đơn giản để giải quyết biến không tĩnh không thể được tham chiếu từ lỗi bối cảnh tĩnh. Trong đoạn mã trên, chúng ta phải xử lý biến không tĩnh bằng tên đối tượng. Nói một cách đơn giản, chúng ta phải tạo một đối tượng của lớp để tham chiếu đến một biến không tĩnh từ ngữ cảnh tĩnh. Một bản sao mới của tất cả các biến không tĩnh được tạo khi một phiên bản biến mới được tạo. Vì vậy, chúng ta có thể truy cập các biến này bằng cách sử dụng tham chiếu của thể hiện mới của lớp. ví dụ, hãy xem xét chương trình Java sau

Ví dụ tĩnh4. java

đầu ra

Sự miêu tả

Trong chương trình trên, chúng ta truy cập thuộc tính số bằng cách sử dụng tên lớp staticExample. Chúng tôi tạo một đối tượng của bài kiểm tra tên lớp StaticExample và tăng giá trị của số bằng cách sử dụng đối tượng kiểm tra

Ở đây, chúng tôi khai báo một phương thức tĩnh. hoan nghênh[]. Sau đó, chúng ta gọi phương thức tĩnh bằng cách sử dụng tên lớp, dấu hai chấm [. ] và tên phương thức [không tạo phiên bản của lớp trước]

PHP - Tìm hiểu thêm về các phương thức tĩnh

Một lớp có thể có cả phương thức tĩnh và không tĩnh. Một phương thức tĩnh có thể được truy cập từ một phương thức trong cùng một lớp bằng cách sử dụng từ khóa self và dấu hai chấm [. ]

Thí dụ

lời chào lớp học {
  chức năng tĩnh công khai chào mừng[] {
    echo "Xin chào thế giới. ";
  }

  public function __construct[] {
    self. hoan nghênh[];
  }
}

lời chào mới[];
?>

Tự mình thử »

Các phương thức tĩnh cũng có thể được gọi từ các phương thức trong các lớp khác. Để làm điều này, phương thức tĩnh phải là public

Thí dụ

lời chào lớp học {
  chức năng tĩnh công khai chào mừng[] {
    echo "Xin chào thế giới. ";
  }
}

class SomeOtherClass {
  public function message[] {
    chào. chào mừng[];
  }
}
?>

Tự mình thử »

Để gọi một phương thức tĩnh từ một lớp con, hãy sử dụng từ khóa parent bên trong lớp con. Ở đây, phương thức tĩnh có thể là public hoặc protected

Chức năng tĩnh có thể truy cập không

Một phương thức tĩnh chỉ có thể truy cập các thành viên dữ liệu tĩnh và các phương thức tĩnh của lớp khác hoặc cùng lớp nhưng không thể truy cập các biến và phương thức không tĩnh .

Làm thế nào để truy cập không

Bạn không thể . Lời giải thích thật đơn giản. không có quyền truy cập vào $this trong ngữ cảnh phương thức tĩnh.

Hàm tĩnh có thể truy cập các biến thành viên không?

Một hàm tĩnh chỉ có thể truy cập các biến hoặc hàm tĩnh khác có trong cùng một lớp . Các hàm thành viên tĩnh được gọi bằng tên lớp. Cú pháp- tên_lớp. tên_hàm[ ]

Chức năng tĩnh có thể sử dụng đối tượng không

Không, Hàm tĩnh của một lớp trong C++ không thể truy cập các biến không tĩnh , nhưng nó chỉ có thể truy cập biến tĩnh. Tuy nhiên, hàm thành viên không tĩnh có thể truy cập cả biến tĩnh và biến không tĩnh. Hàm tĩnh không được liên kết với đối tượng lớp, có nghĩa là không có đối tượng chỉ sử dụng tên lớp, nó có thể được gọi.

Chủ Đề