JavaScript is required

Xem đoạn mã lệnh sau đây. Sau khi thực hiện đoạn mã trên kết quả
hiển thị sẽ là gì ?
class A
{
static $word = "hello";
static function hello()
{
print static ::$word;
}
}
class B extends A
{
static $word = "bye";
}
B::hello();
?>

A.
A . bye
B.
hello
C.
byehello
D.
Có lỗi xảy ra
Trả lời:

Đáp án đúng: A


Đoạn mã PHP định nghĩa một lớp `A` với một thuộc tính tĩnh `$word` và một phương thức tĩnh `hello()`. Lớp `B` kế thừa từ lớp `A` và ghi đè thuộc tính tĩnh `$word`. Khi gọi `B::hello()`, phương thức `hello()` của lớp `A` được thực thi, nhưng vì từ khóa `static` được sử dụng, `$word` sẽ được phân giải ở thời gian chạy dựa trên lớp mà phương thức được gọi từ đó. Trong trường hợp này, phương thức `hello()` được gọi thông qua `B::hello()`, do đó `$word` sẽ tham chiếu đến `$word` của lớp `B`, tức là "bye". Vì vậy, kết quả hiển thị sẽ là "bye".

Câu hỏi liên quan