PHP5 đi kèm với mô hình hướng đối tượng với nó, Một số khái niệm về mô hình hướng đối tượng là. lớp, đối tượng, đóng gói, đa hình, lớp trừu tượng và lớp cuối cùng, phương thức, giao diện và kế thừa, v.v. Trong bài báo này,
chúng ta sẽ thảo luận về Lớp trừu tượng và các tính năng của nó liên quan đến các kỹ thuật hướng đối tượng trong PHP. Ngoài ra, chúng ta sẽ tìm hiểu cách triển khai Lớp trừu tượng cùng với một số ví dụ
Tuy nhiên, trước khi tìm hiểu quá sâu, hãy tìm hiểu cách định nghĩa lớp trừu tượng
Chúng ta có thể khai báo một lớp là trừu tượng bằng cách gắn tên của lớp với từ khóa trừu tượng. Định nghĩa rất rõ ràng, lớp chứa các phương thức trừu tượng được gọi là lớp trừu tượng. Các phương thức trừu tượng định nghĩa trong lớp trừu tượng chỉ có tên và đối số, không có mã nào khác
Không thể tạo đối tượng của lớp trừu tượng. Thay vào đó, chúng ta cần mở rộng các lớp con tính toán định nghĩa của hàm thành phần thân của các phương thức trừu tượng trong các lớp con và sử dụng các lớp con này để tạo các đối tượng.
Hãy thảo luận về một số thông tin quan trọng về các lớp trừu tượng trong PHP
1. Một lớp trừu tượng có thể có trừu tượng cùng với các phương thức không trừu tượng
Thí dụ
getdata[]; ?>
đầu ra
Tutorials Point
2. Không thể khởi tạo trực tiếp
Thí dụ
adddata[]; ?>
đầu ra
Fatal error: Uncaught Error: Cannot instantiate abstract class AbstractClass
3. Khả năng hiển thị tương tự [hoặc ít bị hạn chế hơn]
Tất cả các lớp con phải định nghĩa tất cả các phương thức được đánh dấu là trừu tượng trong lớp cha, với tất cả các phương thức này cần được xác định bằng cùng một chữ ký hoặc chữ ký ít bị hạn chế hơn. Giả sử Trong lớp cha, nếu chúng ta định nghĩa một phương thức trừu tượng với khả năng hiển thị được bảo vệ, thì trong quá trình thực thi lớp con, nó phải được xác định bằng bảo vệ hoặc công khai, nhưng không phải với riêng tư
Thí dụ
addValue[]; ?>
đầu ra
Fatal errorAccess level to ConcreteClass::addValue[] must be public [as in class AbstractBaseClass1]
4. Một phương thức trừu tượng không thể chứa phần thân
Các phương thức được khai báo là trừu tượng chỉ cần khai báo chữ ký của phương thức - chúng không thể định nghĩa bất kỳ ai bên trong chúng. Mặc dù cơ thể có thể hiện diện bên trong một phương pháp không trừu tượng
Thí dụ
printValue[]; ?>
đầu ra
PHP Fatal error: Abstract function ParentClass::printValue[] cannot contain body
5. Bất kỳ lớp nào chứa ít nhất một phương thức trừu tượng phải được khai báo là lớp trừu tượng
Một lớp trừu tượng có thể có các phương thức trừu tượng và không trừu tượng, nhưng nó phải chứa ít nhất một phương thức trừu tượng. Nếu nó chứa một phương thức trừu tượng thì nó phải được khai báo là trừu tượng
Thí dụ
________số 8_______đầu ra
PHP Fatal error: Class AbstractClass contains 1 abstract method and must therefore be declared abstract or implement the remaining methods [AbstractClass::getValue]
6. Lớp trừu tượng không hỗ trợ đa kế thừa
Nó không hỗ trợ đa kế thừa
Thí dụ
Tutorials Point0
đầu ra
Tutorials Point1
Giải trình
Ở đây chúng ta đã khai báo SuperClass là một lớp trừu tượng có phương thức test[] và welcome[], ClassA và ClassB và các lớp cụ thể mở rộng từ một lớp trừu tượng. Sau đó, chúng tôi đã cố gắng tạo Lớp mở rộng từ Lớp và Lớp B. Như rõ ràng từ đoạn mã, khi gọi phương thức welcome[] sử dụng đối tượng ClassC, trình biên dịch không thể chọn xem nó phải gọi phương thức welcome[] của ClassA hay phương thức welcome[] của ClassB. Vì vậy, để tránh những phức tạp như vậy, PHP không hỗ trợ đa kế thừa
Ghi chú
Một lớp trừu tượng có thể mở rộng một lớp trừu tượng khác, Lớp trừu tượng có thể cung cấp việc triển khai giao diện
Lớp trừu tượng định nghĩa một khái niệm trừu tượng, ví dụ số là một khái niệm trừu tượng trong khi int, byte là các khái niệm cụ thể. Phương tiện là một khái niệm trừu tượng trong khi ô tô và tàu là những khái niệm cụ thể
Lớp trừu tượng dùng để kế thừa để tạo một lớp mới, không trừu tượng [cụ thể]
Bằng cách tạo một trừu tượng lớp cha, bạn xác định các quy tắc về những phương thức mà các lớp con của nó phải chứa
Một phương thức trừu tượng trong lớp cha không thực sự có bất kỳ mã nào trong phương thức
Nó để lại điều đó cho các lớp con. Nó chỉ định lớp con phải làm gì, không phải làm như thế nào
cú pháp
Để khai báo một phương thức trừu tượng, chỉ cần sử dụng từ khóa trừu tượng, như sau
abstract public function myMethod[ $param1, $param2 ];
Chúng ta có thể tùy chọn chỉ định bất kỳ tham số nào mà phương thức phải chứa
Tuy nhiên, bạn không bao gồm bất kỳ mã nào triển khai phương thức, cũng như không chỉ định loại giá trị mà phương thức phải trả về
Nếu bạn khai báo một hoặc nhiều phương thức của một lớp là trừu tượng, bạn cũng phải khai báo cả lớp là trừu tượng.
abstract class MyClass { abstract public function myMethod[ $param1, $param2 ]; }
Ghi chú
Bạn không thể khởi tạo một lớp trừu tượng-nghĩa là tạo một đối tượng từ nó trực tiếp
// Generates an error: "Cannot instantiate abstract class MyClass" $myObj = new MyClass;
ví dụ 1
Name;
}
}
?>
Như đã đề cập, bạn cũng có thể sử dụng từ khóa trừu tượng với các phương thức, nhưng nếu một lớp có ít nhất một phương thức trừu tượng, thì bản thân lớp đó phải được khai báo là trừu tượng
Bạn sẽ gặp lỗi nếu bạn cố gắng cung cấp bất kỳ mã nào bên trong một phương thức trừu tượng, điều này khiến điều này trở nên bất hợp pháp