JavaScript is required

class A
{
static $word = "hello";
static function hello()
{
print static::$word;
}
}
class B extends A
{
static $word = "bye";
}
B::hello();
?>
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ì?

A.

bye

B.

hello

C.

byehello

D.

Tất cả đều sai

Trả lời:

Đáp án đúng: A


Đoạn code PHP này sử dụng tính năng kế thừa và các thuộc tính/phương thức static. Class `A` có một thuộc tính static `$word` được khởi tạo với giá trị "hello" và một phương thức static `hello()` để in giá trị của `$word`. Class `B` kế thừa từ class `A` và ghi đè (override) thuộc tính static `$word` bằng giá trị "bye". Khi gọi `B::hello()`, phương thức `hello()` được gọi từ class `A`, nhưng `static::$word` sẽ tham chiếu đến thuộc tính `$word` trong phạm vi của class mà phương thức được gọi (trong trường hợp này là class `B`). Do đó, giá trị của `$word` sẽ là "bye", chứ không phải "hello". Vậy, kết quả hiển thị sẽ là "bye".

Câu hỏi liên quan