PHP khi nào nên sử dụng giao diện và lớp trừu tượng
Các lớp trừu tượng là khi lớp cha chứa một phương thức tên, nhưng nó cần lớp con của nó để chạy các tác vụ đó. Trong lớp Trừu tượng có ít nhất một phương thức trừu tượng. Các phương thức trừu tượng chỉ có thể được khai báo trong một lớp trừu tượng nhưng không thể được triển khai trong mã. Các lớp trừu tượng có thể được khai báo với sự trợ giúp của các từ khóa trừu tượng Show
Cú pháp cho một lớp trừu tượng-
Đặc điểm của một lớp trừu tượng
Sự khác biệt giữa Lớp trừu tượng và Giao diệnAbstract ClassInterfaceAbstract Class không hỗ trợ nhiều kế thừa. Giao diện hỗ trợ nhiều kế thừa. Chúng chứa các thành viên dữ liệuChúng không chứa các thành viên dữ liệu. Một lớp trừu tượng chứa cả thành viên trừu tượng và không trừu tượng. Giao diện chỉ chứa các thành viên trừu tượng. Lớp trừu tượng chứa các hàm tạo. Chúng không chứa hàm tạo. Toàn bộ thành viên của một lớp trừu tượng có thể là tĩnhCác thành viên của giao diện không thể là tĩnh. Nó chứa các công cụ sửa đổi truy cập cho phụ, chức năng và thuộc tính. Nó không truy cập công cụ sửa đổi, theo mặc định, mọi thứ đều công khaiGiao diện trong PHPVới sự trợ giúp của giao diện, người dùng có thể tạo các chương trình và trợ giúp trong việc chỉ định các phương thức công khai được triển khai bởi một lớp, bằng cách ẩn đi độ phức tạp và chi tiết về cách các phương thức cụ thể được triển khai. Điều này thường được gọi là mức độ trừu tượng tiếp theo. Chúng ta có thể định nghĩa giao diện giống như một lớp, điểm khác biệt duy nhất là từ khóa lớp được thay thế bằng từ khóa giao diện Cú pháp của một giao diện-
Đặc điểm của một giao diện
Phần kết luậnCác giao diện và các lớp trừu tượng hoàn toàn khác nhau, không thể thay thế hoặc sử dụng các lựa chọn thay thế của nhau. Các giao diện giống như các lớp vỏ trống mong đợi các lớp con thực hiện mọi thứ cho chúng trong khi lớp trừu tượng không chỉ chứa các mẩu thông tin chung mà còn mong đợi các lớp con lấp đầy các khoảng trống còn lại giữa chúng. Tóm lại- Một lớp trừu tượng cho phép người dùng tạo chức năng mà các lớp con có thể triển khai hoặc ghi đè và giao diện chỉ cho phép người dùng xác định chức năng nhưng chúng ta có thể triển khai nó lớp trừu tượng
giao diện
Có thể thấy, chúng ta đang mở rộng 1 với ba giao diện khác là 2, 2 và 4Bây giờ chúng ta hãy thử mở rộng một 8
Không có vấn đề gì, bạn CÓ THỂ mở rộng một lớp trừu tượng với chính xác một lớp nhưng nếu bạn cố gắng thêm một lớp nữa
Lần này PHP sẽ báo cho bạn một lỗi lạ mà không cho bạn biết bạn đang làm gì sai 6Tôi ước PHP sẽ đưa ra thông báo giống như vậy (hy vọng PHP sẽ đưa ra thông báo lỗi thông minh hơn trong các phiên bản sau) 7Interface does'n Contains Data Member | Abstract class contains Data Member Bởi các thành viên dữ liệu, nó có nghĩa là các thuộc tính hoặc biến của lớp. Vì vậy, bạn không thể thêm thành viên dữ liệu vào giao diện
Vì vậy, trong một giao diện, chỉ có thể cung cấp sơ khai phương thức Tuy nhiên, bạn có thể thêm các thành viên dữ liệu vào một lớp trừu tượng, tất nhiên đây là mã hợp lệ
Interface does'n contains Constructors | Abstract class contains Constructors Có vẻ như điểm này có thể áp dụng cho các ngôn ngữ khác nhưng trong PHP, một giao diện CÓ THỂ có trình bao tạo trống
Giống như các ngôn ngữ khác, PHP không nên cho phép có hàm tạo bên trong giao diện. Nhưng dù sao đi nữa, nó không có nhiều ý nghĩa ở đây và dù sao cũng nên tránh Mặt khác, một lớp trừu tượng có thể chứa phương thức khởi tạo
Ở đây hàm tạo được gọi là 8 và do đó sử dụng các lớp con để bổ sung cho nó. Tuy nhiên, bạn cũng có thể có mã khởi tạo chung trong hàm tạo của một lớp trừu tượng, trong trường hợp đó, bạn cần xóa từ khóa 8 và cung cấp phần thân cho nó 0 1Điều này đơn giản có nghĩa là một giao diện chỉ có thể chứa sơ khai phương thức chứ không phải triển khai của chúng. Điều này khá giống với điểm thứ hai trong hình trên. Đây là lý do tại sao trong các phương thức của giao diện, chúng không có phần thân được đánh dấu bằng dấu ngoặc nhọn 0. Vì vậy, một giao diện hoàn toàn trống rỗng, thực thi một số quy tắc mà các lớp con phải thực hiện và đó là nóCác lớp trừu tượng có thể có cả hai; . Nói chung, sơ khai phương thức trống được bắt đầu bằng từ khóa 8 để các lớp con phải cung cấp chi tiết triển khai của chúng. Nhưng một lớp trừu tượng cũng có thể chứa đầy đủ triển khai phương thức bên trong nó, thường được sử dụng cho phần chức năng chung mà mỗi lớp con có thể cần. Ví dụ 2Trong đoạn mã trên, chúng ta có thể thấy rằng lớp 2 có một phương thức 8 có tên là 4 vì mỗi lớp con (động vật) có cách tìm con mồi riêng và một phương thức được triển khai đầy đủ có tên là 5 vì tất cả các loài động vật đều có thể chạy, điều này không cần thiết . Vì vậy, ở đây phương pháp 5 được triển khai đầy đủ và đại diện cho dữ liệu chung cần được chia sẻ giữa các lớp conLưu ý rằng ngoài các phương thức phổ biến được triển khai đầy đủ bên trong một lớp trừu tượng, bạn cũng có thể có các thành viên dữ liệu chung, ví dụ như các biến cần được chia sẻ giữa các lớp con 3Theo công cụ sửa đổi truy cập, chúng tôi muốn nói đến khả năng thay đổi phạm vi bằng cách sử dụng các từ khóa như 7, 8 và 9. Chúng tôi không thể sử dụng chúng cho các giao diện nhưng chúng tôi có thể sử dụng chúng cho mọi thứ trong các lớp trừu tượng 4Điều này một lần nữa có thể thực hiện được trong PHP (kể từ bây giờ với PHP 5. 4) không giống như các ngôn ngữ khác, vì vậy bạn CÓ THỂ làm 5Lưu ý thêm từ khóa Interface does'n Contains Data Member | Abstract class contains Data Member0 để đánh dấu nó là phương thức tĩnh Đối với lớp trừu tượng, bạn có thể có các thành viên tĩnh cũng như các phương thức được triển khai trong lớp trừu tượng 6Nhưng bạn không thể có một phương thức vừa là Interface does'n Contains Data Member | Abstract class contains Data Member0 vừa là 8, vì vậy bạn không thể làm điều này, đây là điều phổ biến trên các ngôn ngữ 7Tóm lại, các lớp giao diện và trừu tượng hoàn toàn khác nhau, bạn không thể hoán đổi chúng hoặc sử dụng cái này thay thế cho cái kia. Các giao diện là các shell hoàn toàn trống rỗng mong muốn các lớp con thực hiện mọi thứ cho chúng. Mặt khác, lớp trừu tượng không chỉ có thể chứa các mẩu thông tin chung bằng cách triển khai bên trong chúng mà còn mong đợi các lớp con điền vào các khoảng trống còn lại Khi nào chúng ta nên sử dụng giao diện và lớp trừu tượng?Câu trả lời ngắn. Một lớp trừu tượng cho phép bạn tạo chức năng mà các lớp con có thể thực hiện hoặc ghi đè. Giao diện chỉ cho phép bạn xác định chức năng, không triển khai chức năng đó . Và trong khi một lớp chỉ có thể mở rộng một lớp trừu tượng, nó có thể tận dụng nhiều giao diện.
Trong tình huống nào thì giao diện tốt hơn lớp trừu tượng?Một giao diện tốt hơn một lớp trừu tượng khi nhiều lớp cần triển khai giao diện . Thành viên của giao diện không thể tĩnh. Thành viên hoàn chỉnh duy nhất của một lớp trừu tượng có thể là tĩnh. C# không hỗ trợ đa thừa kế; .
Tại sao chúng ta nên sử dụng lớp trừu tượng trong PHP?Chúng tôi sử dụng các lớp trừu tượng khi chúng tôi muốn lập trình viên (chính mình hoặc người khác) viết một phương thức lớp nhất định , nhưng chúng tôi . Lấy một ví dụ, hình tròn, hình chữ nhật, hình bát giác, v.v. |