Khái niệm kế thừa là gì ?
- Đối với lập trình sẵn hướng đối tượng trong PHP, khái niệm “kế thừa” dùng để ám chỉ việc một lớp được dẫn xuất xuất phát điểm từ một lớp khác.
Bạn đang xem: Tính kế thừa trong oop php
- Lớp được dẫn xuất từ lớp không giống thì được call là “lớp con”, nó đã thừa hưởng toàn bộ các thuộc tính và phương thức (thuộc loại public & protected) của lớp cha, dường như thì lớp con có thể sở hữu những thuộc tính và phương thức của riêng rẽ nó.
- một lớp con sẽ tiến hành khai báo bởi từ khóa extends với cú pháp như sau:
class TênLớpCon extends TênLớpCha//some code
- Lớp SinhViên được thừa kế từ lớp CôngDân, cho nên vì vậy nó đang thừa hưởng các thuộc tính & phương thức trường đoản cú lớp CôngDân. Không tính ra, lớp SinhViên còn tồn tại một cách thức riêng là message().
name = $input_name;$this->year = $input_year;}public function intro()echo "Tôi tên là $this->name, sinh vào năm $this->year";}class SinhVien extends CongDanpublic function message()echo "Chào các bạn!";$nhan = new SinhVien("Nguyễn Thành Nhân",1993);$nhan->message();$nhan->intro();?>
Phạm vi truy cập protected
- Ở bài học kinh nghiệm trước thì tôi sẽ có giới thiệu sơ qua ba từ khóa public - protected - private dùng làm xác định phạm vi truy vấn của các thuộc tính & phương thức. Trong đó, public cùng private đã có giải thích chi tiết thông qua những ví dụ, còn riêng protected thì chưa (bởi do trong bài bác đó chúng ta chưa biết có mang kế thừa)- mang lại nên, trong phần này tôi sẽ làm sơ qua nhì ví dụ để chúng ta hiểu rõ hơn về phạm vi truy cập protected.
Xem thêm: Top 3 Cung Hoàng Đạo Khó Gần Nhất, Top 3 Cung Hoàng Đạo Lạnh Lùng Khó Gần Nhất
name = $input_name;$this->year = $input_year;}protected function intro()echo "Tôi tên là $this->name, sinh vào năm $this->year";}class SinhVien extends CongDanpublic function message()echo "Chào những bạn!";$nhan = new SinhVien("Nguyễn Thành Nhân",1993);$nhan->message();$nhan->intro(); //ERROR (phương thức intro là protected, nó chỉ có thể được gọi phía bên trong lớp CongDan, hoặc được gọi bên phía trong các lớp được thừa kế từ lớp CongDan, điển trong khi lớp SinhVien)?>
name = $input_name;$this->year = $input_year;}protected function intro()echo "Tôi thương hiệu là $this->name, sinh vào năm $this->year";}class SinhVien extends CongDanpublic function message()echo "Chào những bạn!";$this->intro(); //OK (phương thức intro được gọi bên phía trong lớp SinhVien)$nhan = new SinhVien("Nguyễn Thành Nhân",1993);$nhan->message();?>
Ghi đè phương thức
- các phương thức được thừa kế từ lớp phụ vương có thể được ghi đè bằng cách khai báo lại bên phía trong lớp con.name = $input_name;$this->year = $input_year;}protected function intro()echo "Tôi tên là $this->name, sinh năm $this->year";}class SinhVien extends CongDanpublic $gender;public function __construct($input_name, $input_year, $input_gender)$this->name = $input_name;$this->year = $input_year;$this->gender = $input_gender;public function intro()echo "Tôi thương hiệu là $this->name, sinh vào năm $this->year, giới tính $this->gender";$nhan = new SinhVien("Nguyễn Thành Nhân",1993,"Nam");$nhan->intro();?>
Từ khóa final
- từ khóa final dùng để làm ngăn chặn việc thừa kế lớp, hoặc ngăn ngừa việc ghi đè lên trên phương thức.- ko lớp nào có thể kế vượt lớp CongDan (việc quan niệm lớp SinhVien thừa kế lớp CongDan sẽ xảy ra lỗi)
name = $input_name;}public function intro()echo "Tôi tên là $this->name";}class SinhVien extends CongDan //ERROR//some code?>
- thủ tục intro() sẽ không thể bị ghi đè phía bên trong các lớp con.
Chúng tôi chuyên cung cấp các bài viết thuộc lĩnh vực lập trình web, tài liệu trả lời học HTML, CSS, Javascript, jQuery, MySQL, PHP.