Hướng dẫn php override abstract class method - php ghi đè phương thức lớp trừu tượng
Tôi nghĩ rằng có một vấn đề trong việc thực hiện OOP của PHP. Show Chỉnh sửa: Xem xét ví dụ minh họa hơn: Consider more illustrative example:
Vấn đề là khi động vật :: Giao tiếp là một phương pháp trừu tượng, PHP nói rằng các phương pháp sau là bất hợp pháp: "Truyền thông chức năng công cộng (Panda $ Đối tác)" "Chức năng công cộng Giao tiếp (Đối tác $ của con người)" Nhưng khi Animal :: Giao tiếp là không Abstract nhưng không thực hiện php không thực hiện rằng các phương pháp này là hợp pháp. Vì vậy, theo ý kiến của tôi, nó không đúng vì chúng tôi đang ghi đè trong cả hai trường hợp và cả hai trường hợp này đều bằng nhau, vì vậy có vẻ như đó là một lỗi ... Phần cũ của bài viết: Vui lòng xem xét mã sau: Framework.php
Implementation.php
MyDecorator.php
Mã sau đây gây ra lỗi trong MyDecorator.php TellingMyDecorator.php telling Lỗi gây tử vong: Tuyên bố của MyDecorator :: Trang trí () phải tương thích với A \ Decorator :: Trang trí () trong MyDecorator.php On Line ... Nhưng khi tôi thay đổi khung.php :: Lớp trang trí thành triển khai sau:
Vấn đề biến mất. PHP có các lớp và phương pháp trừu tượng. Các lớp được xác định là trừu tượng không thể được khởi tạo và bất kỳ lớp nào chứa ít nhất một phương pháp trừu tượng cũng phải là trừu tượng. Các phương thức được định nghĩa là trừu tượng chỉ đơn giản là khai báo chữ ký của phương thức; Họ không thể xác định việc thực hiện. Khi kế thừa từ một lớp trừu tượng, tất cả các phương pháp được đánh dấu trừu tượng trong tuyên bố lớp của phụ huynh phải được xác định bởi lớp con và tuân theo các quy tắc tương thích kế thừa và chữ ký thông thường. Ví dụ #1 Lớp trừu tượng ví dụ
ConcreteClass1 extends AbstractClass Ví dụ trên sẽ xuất ra: ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass2 Ví dụ #2 Ví dụ về lớp trừu tượng
0
2Ví dụ trên sẽ xuất ra: Ví dụ #2 Ví dụ về lớp trừu tượng ¶
3 4 5 6 7 8 9 0 1Ironiridis tại gmail dot com ¶ ¶ 14 năm trước 2 3 4 5mbajoras tại gmail dot com ¶ ¶ 12 năm trước 6 7 8 9 0 1 2 1Một dot tsiaparas tại watergate dot gr ¶ ¶ 11 năm trước 4 5 6 7Jai tại hình Dot CA ¶ ¶ 12 năm trước 8Một dot tsiaparas tại watergate dot gr ¶ ¶ 11 năm trước 9 0 1Jai tại hình Dot CA ¶ ¶ 11 năm trước 2 3 4 5 6 7 0 9Jai tại hình Dot CA ¶ ¶ 5 năm trước ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass20 ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass21 ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass22 ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass23 1Một dot tsiaparas tại watergate dot gr ¶ ¶ 11 năm trước ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass25 ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass26 ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass27 6ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass29 Jai tại hình Dot CA ¶ ¶ 5 năm trước
abstract class AbstractClass 2Joelhy ¶ ¶ 14 năm trước
0
abstract class AbstractClass 6mbajoras tại gmail dot com ¶ ¶ 12 năm trước
6
abstract class AbstractClass 9Một dot tsiaparas tại watergate dot gr ¶ ¶ 12 năm trước
1Một dot tsiaparas tại watergate dot gr ¶ ¶ 5 năm trước
public function class public function public function class public function 1Joelhy ¶ ¶ Shaman_master tại danh sách dot ru ¶ public function class public function public function class public function public function class public function 14 năm trước ¶ swashata4u tại gmail dot com ¶ public function class public function public function class public function public function class public function
1lén lút tại hotmail dot com ¶ 12 năm trước
Một dot tsiaparas tại watergate dot gr ¶ ¶ 14 năm trước
6
abstract class AbstractClass 6mbajoras tại gmail dot com ¶ ¶ swashata4u tại gmail dot com ¶
00 01 02 03 04 05 06 1lén lút tại hotmail dot com ¶
08 09 10 11 12 13 14Ironiridis tại gmail dot com ¶ ¶ 14 năm trước 15 16 17 18 19 20 21 22 17 24 0 26 27 17 29 30 1mbajoras tại gmail dot com ¶ ¶ Shaman_master tại danh sách dot ru ¶ 32 33 34 35 364 năm trước ¶ 14 năm trước 37 6 39mbajoras tại gmail dot com ¶ ¶ 14 năm trước 40 41 42 43 44 45 1mbajoras tại gmail dot com ¶ ¶ 12 năm trước 47 48 6 50Một dot tsiaparas tại watergate dot gr ¶ ¶ 12 năm trước 51Chúng ta có thể ghi đè phương thức trừu tượng trong PHP không?Một lớp con không phải là lớp con của một lớp cha mẹ trừu tượng phải ghi đè từng phương pháp trừu tượng của cha mẹ. Một đứa trẻ không Abstract phải ghi đè từng phương thức trừu tượng được kế thừa từ cha mẹ của nó bằng cách xác định một phương thức có cùng chữ ký và cùng loại trả về.. A non-abstract child must override each abstract method inherited from its parent by defining a method with the same signature and same return type.
Phương pháp ghi đè trong PHP là gì?Trong chức năng ghi đè, cả hai lớp cha và con nên có cùng tên hàm và số lượng đối số.Nó được sử dụng để thay thế phương pháp cha mẹ trong lớp con.Mục đích của việc ghi đè là thay đổi hành vi của phương pháp lớp cha.Hai phương thức có cùng tên và cùng một tham số được gọi là ghi đè.used to replace parent method in child class. The purpose of overriding is to change the behavior of parent class method. The two methods with the same name and same parameter is called overriding.
Chúng ta có thể kế thừa lớp trừu tượng trong PHP không?Khi kế thừa từ một lớp trừu tượng, phương thức lớp con phải được xác định cùng tên và cùng một công cụ sửa đổi truy cập bị hạn chế.Vì vậy, nếu phương thức trừu tượng được định nghĩa là được bảo vệ, phương pháp lớp con phải được định nghĩa là được bảo vệ hoặc công khai, nhưng không riêng tư.. So, if the abstract method is defined as protected, the child class method must be defined as either protected or public, but not private.
Ghi đè lớp trừu tượng là gì?Để thực hiện các tính năng của một lớp trừu tượng, chúng tôi thừa hưởng các lớp con từ nó và tạo các đối tượng của lớp con.Một lớp con phải ghi đè tất cả các phương thức trừu tượng của một lớp trừu tượng.Tuy nhiên, nếu lớp con được tuyên bố trừu tượng, không bắt buộc phải ghi đè các phương thức trừu tượng.A subclass must override all abstract methods of an abstract class. However, if the subclass is declared abstract, it's not mandatory to override abstract methods. |