Kế thừa trong PHP

Kế thừa trong PHP

Nói tới lập trình hướng đối tượng (OOP) trong PHP thì không thể thiếu tính kế thừa. Tuy nhiên bạn sẽ cảm thấy hơi khó hiểu nếu không thực hành bài tập. Bài viết này Quách Quỳnh sẽ giúp cho bạn hiểu rõ hơn về kế thừa trong PHP.

Kế thừa trong PHP là gì?

Kế thừa (inheritance) là tạo ra một lớp mới dựa trên lớp có sẵn. Lớp có sẵn là lớp cha và lớp mới được ra là lớp con. Khi tạo lớp kế thừa sẽ sử dụng từ khóa Extends. Lớp con sẽ truy cập được với public, protected. Còn với private thì không. (Đọc lại: Public, Private, Protected trong PHP).

Hiểu một cách đơn giản là trong gia đình đứa con sẽ thừa hưởng mọi đặc điểm của bố. Như màu tóc, mắt, tính cách vv…

Bài tập ví dụ về kế thừa

Chúng ta có một Class là DongVat. Và lớp kế thừa là ConGa.

<?php

Class DongVat {
    //
}

Class ConGa extends DongVat {
    //
}

Tại lớp động vật sẽ có các thuộc tính cần khai báo như: chân, cân nặng, màu lông.

Và đoạn code đầy đủ

<?php

Class DongVat {
    public $cannang;
    public $maulong;
    public $sochan;

    public function cannang($cannang) {
    	return $this->cannang=$cannang;
    }

    public function maulong($maulong) {
    	return $this->maulong=$maulong;
    }

    public function sochan($sochan) {
    	return $this->sochan=$sochan;
    }
}

Class ConGa extends DongVat {
    
}

$result = new ConGa();
echo $result->cannang('4kg <br/>');
echo $result->maulong('Đỏ <br/>');
echo $result->sochan('2 <br/>');

Khi gọi Class là ConGa mặc dù không khai báo gì cả nhưng các thuộc tính và phương thức vẫn được gọi ra từ lớp mà nó đã kế thừa.

Ghi đè phương thức

Các phương thức ở lớp cha có thể bị ghi đè lên bằng cách khai báo lại trong lớp con.

Từ khóa final

Final trong PHP dùng để chặn kế thừa lớp hoặc ngăn chặn ghi đè phương thức.

Cũng với ví dụ trên bạn sẽ thêm final phía trước Class DongVat.

Và kết quả:

Fatal error: Class ConGa may not inherit from final class (DongVat)

Kết luận: Tính kế thừa bạn sẽ thường gặp trong OOP. Vì vậy với các kiến thức bài này cung cấp hi vọng bạn có cái nhìn chi tiết hơn về hướng đối tượng trong PHP.