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ì?
{
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ì?
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".