01/10/2018, 12:09

Hỏi về cách gọi phương thức trong class cha từ class con

Em chào các sư huynh
Em đang có chút thắc mắc về cách gọi 1 phương thức trong class cha từ class con, ví dụ như vầy:

class Animals {
  public function speak(){
    echo "Animals speak";
  }
}

class Dog extends Animals {
  public function dogSpeak() {
    (1)
  }
}

Trong chỗ (1), theo e biết có 2 cách gọi hàm speak ở lớp cha

  1. parent::speak();
  2. $this->speak();
    Cả 2 cách này đều cho kết quả như nhau, vậy có điểm gì khác nhau giữa 2 cách gọi này không và e nên sử dụng mỗi cách trên khi nào v ạ?
    Em cảm ơn nhiều =D
Dark.Hades viết 14:19 ngày 01/10/2018

Khi bạn overide function speak, muốn dùng lại của parent thì sẽ dùng cách 1, PHP tự tìm những hàm gần với class hiện tại nhất rồi gọi, giả sử class được extends nhiều lớp, lớp gần nhất sẽ được gọi.

class Animals {
  public function speak(){
    echo "Animals speak";
  }
}

class Dog extends Animals {
  public function dogSpeak() {
    (1)
    // có thể gọi parent::speak() tại đây cũng không sao
  }
  // Thực hiện overide hàm speak
  public function speak(){
    // Code của Dog speak.
    // sẽ ở đây hoặc ở dưới, tùy
    parent::speak(); // sẽ thừa kế kết quả của Animal::speak
    // Code của Dog speak.
    // sẽ ở dưới này
  }
}

PHP nhìn chung đơn giản hơn java/C#/C++ rất nhiều về cách bố trí OOP, chỉ đọc qua là biết đâu là overide, đâu là kế thừa,…

Bài liên quan
0