OOP có 4 tính chất:
Tính trừu tượng: đơn giản hóa đối tượng, chỉ bao gồm những đặc điểm quan tâm và bỏ qua những đặc điểm chi tiết nhỏ, giúp xác định những thuộc tính hoặc phương thức cần thiết.
Cú pháp: abstract class NameClass{}
Khai báo phương thức: abstract visibility function methodName();
visibility là public hoặc protected
Khi tạo 1 class kế thừa class có abstract, sẽ cần định nghĩa lại phương thức abstract
VD: abstract class Person{
protected $name;
abstract protected function getName();
}
class Student extends Person{
public function getName(){
return this->name;}
Tính kế thừa: 1 lớp có thể kế thừa các thuộc tính và phương thức (sử dụng lại) của lớp khác
Cú pháp: class ChildClass extends ParentClass{}
Tính đóng gói: phân quyền cho lớp, kiểm soát được thuộc tính đầu vào
Sử dụng thông qua public (có thể truy xuất ở mọi nơi), private (chỉ truy xuất trong lớp), protected (truy xuất trong lớp hoặc từ lớp con kế thừa)
Tính đa hình: sau khi kế thừa thì lớp con sẽ viết lại các phương thức của lớp cha (overwrite)
Phân biệt Overriding và Overloading?
Overriding giúp cho lớp con có thể ghi đè phương thức của lớp cha
Khi ghi đè thì tham số phải trùng, kiểu giá trị phải tương thích.
Cách dùng: gọi lại phương thức lớp cha và khởi tạo lại phương thức.
Overloading là nạp chồng phương thức đơn giản là có vài phương thức trùng tên nhưng khác nhau về đối số trong cùng 1 class, dùng để thu được tính đa hình của lớp
Cách dùng:
– Thay đổi số lượng tham số
– Thay đổi kiểu trả về của tham số
Override | Overload | |
---|---|---|
Hành vi | Thay đổi hành vi hiện tại của phương thức. | Thêm hoặc mở rộng cho hành vi của phương thức. |
Đa hình | Thể hiện tính đa hình tại run time. | Thể hiện tính đa hình tại compile time. |
Danh sách tham số | Danh sách tham số phải giống nhau. | Danh sách tham số có thể khác nhau. |
Quyền truy cập | Phương thức ghi đè ở lớp con phải có quyền truy cập bằng hoặc lớn hơn phương thức được ghi đè ở lớp cha. | Các phương thức nạp chồng có thể có quyền truy cập khác nhau. |
Giá trị trả về | Kiểu trả về bắt buộc phải giống nhau. | Kiểu trả về có thể khác nhau. |
Phạm vi | Xảy ra giữa 2 class có quan hệ kế thừa | Xảy ra trong phạm vi cùng 1 class. |