Giao diện có thể có hằng số trong php không?
Hãy cùng tìm hiểu Giao diện là gì, cách sử dụng chúng (có ví dụ) và chúng khác với lớp trừu tượng như thế nào Show
nội dung Giao diện là gì và chúng hoạt động như thế nào trong PHP?Giao diện đối tượng, hoặc chỉ giao diện, là các cấu trúc PHP xác định một tập hợp các phương thức Các lớp có thể thực hiện các giao diện. Khi một lớp triển khai một giao diện, lớp đó cũng phải triển khai tất cả các phương thức của giao diện Các giao diện tương tự như các lớp trừu tượng, nhưng có một số khác biệt quan trọng Quan trọng nhất, các giao diện chỉ có thể định nghĩa các hằng số và phương thức công khai. Hơn nữa, các giao diện chỉ xác định chữ ký của các phương thức (nghĩa là tên của phương thức và danh sách đối số), mà không có triển khai thực tế Các giao diện được định nghĩa tương tự như các lớp, nhưng bạn phải sử dụng từ khóa giao diện thay vì từ khóa lớp Hãy xem ngay một ví dụ
Xoay là một giao diện Nó chứa hai phương pháp. xoayRight() và rotateLeft() Khi một lớp triển khai giao diện Xoay, lớp đó cũng phải triển khai các phương thức này Ý tưởng là nếu một lớp thực hiện Xoay có nghĩa là nó có thể xoay trái và phải, và do đó nó phải cung cấp các phương thức giao diện
Vì vậy, làm thế nào để bạn sử dụng một giao diện, trong thực tế? Giả sử bạn có một ứng dụng web lập kế hoạch nhà bếp. (Bạn biết đấy, một trong những ứng dụng mà bạn có thể thiết kế và lên kế hoạch cho căn phòng của mình) Một nhà bếp có thể chứa các đồ vật. tường, các thiết bị như tủ lạnh và lò nướng bánh, bàn, ghế, v.v. Một số đồ vật này, chẳng hạn như bàn và ghế, có thể xoay được. Những thứ khác, như tường và tủ lạnh, không thể Mỗi đối tượng nhà bếp có một lớp PHP tương ứng. Những cái có thể xoay được thực hiện giao diện Xoay được Như thế này
Các lớp Bàn và Ghế thực hiện giao diện Xoay Khi họ làm như vậy, họ cũng phải thực hiện các phương thức giao diện, nghĩa là. xoayRight() và rotateLeft() Do đó, đối với mọi lớp triển khai Xoay, bạn luôn có thể gọi các phương thức rotateRight() và rotateLeft() Ví dụ
Bây giờ, bạn có thể hỏi. chúng ta không thể định nghĩa rotateLeft() và rotateRight() bên trong một lớp trừu tượng, rồi để Table and Chair kế thừa từ lớp đó sao? Vâng, về mặt kỹ thuật, vâng Tuy nhiên, nếu bạn làm như vậy thì tất cả các lớp có thể xoay vòng cần kế thừa từ cùng một lớp cơ sở. Nhưng đây không phải lúc nào cũng là một giải pháp tốt Ví dụ, cả bàn và máy nướng bánh mì đều có thể xoay, nhưng chúng không có điểm chung nào. Sẽ không hợp lý nếu chúng kế thừa từ cùng một lớp cơ sở, phải không? Vấn đề ngược lại cũng tồn tại Ví dụ: máy nướng bánh mì và tủ lạnh đều là “thiết bị gia dụng” và việc chúng kế thừa từ một loại thiết bị cơ sở chung là điều hợp lý. Nhưng trong khi lò nướng bánh có thể xoay được thì tủ lạnh lại không thể Các giao diện giải quyết vấn đề này, bởi vì các lớp có thể thực hiện chúng bất kể các lớp cha của chúng Cách kiểm tra giao diện của một lớp. class_implements() .Làm thế nào để bạn biết nếu một lớp thực hiện một giao diện cụ thể? Bạn có thể sử dụng hàm class_implements() Hàm này lấy một đối tượng hoặc một tên lớp làm đối số của nó và trả về một mảng các giao diện được triển khai bởi lớp đó Ví dụ
đầu ra sẽ là
Bằng cách sử dụng chức năng này, bạn chỉ có thể gọi một cách có chọn lọc các phương thức của giao diện trên các đối tượng triển khai nó Như thế này
Cú pháp giao diện và quy tắcHãy tóm tắt những gì bạn đã học được cho đến nay
Giao diện chỉ có thể chứa
Ghi chú. Giao diện PHP không có hàm tạo
Khi một lớp cài đặt một giao diện, lớp đó phải cài đặt tất cả các phương thức của giao diện đó Có một ngoại lệ. nếu một lớp trừu tượng cài đặt một giao diện, thì nó không cần cài đặt tất cả các phương thức của giao diện. Tuy nhiên, những đứa trẻ không trừu tượng của lớp đó phải hoàn thành việc thực hiện Ví dụ
Các hằng số của giao diện trở nên khả dụng trong các lớp triển khai nó Ví dụ
Giao diện và kế thừaCác giao diện có thể sử dụng tính kế thừa giống như các lớp, với sự khác biệt là các giao diện kế thừa từ các giao diện khác Chỉ để làm cho nó rõ ràng. giao diện chỉ có thể kế thừa từ các giao diện khác chứ không phải từ các lớp Kế thừa trong giao diện tuân theo các quy tắc giống như kế thừa lớp. Đặc biệt, các phương thức và hằng số được kế thừa từ giao diện cha Ví dụ
Triển khai nhiều giao diệnMột lớp PHP có thể triển khai nhiều giao diện Để làm được điều đó, bạn cần phân tách các tên giao diện bằng dấu phẩy Ví dụ 0
Ghi chú Nếu hai giao diện cung cấp cùng một phương thức, bạn không thể triển khai cả hai giao diện trong cùng một lớp, trừ khi cả hai phương thức đều có cùng đối số Ví dụ: đoạn mã sau sai vì hai phương thức rotateRight() nhận các đối số khác nhau Giao diện CAN có hằng số PHP?Hằng số ¶
. Hằng số giao diện hoạt động chính xác như hằng số lớp. Trước PHP 8. 1. 0, chúng không thể bị ghi đè bởi một lớp/giao diện kế thừa chúng. It's possible for interfaces to have constants. Interface constants work exactly like class constants. Prior to PHP 8.1. 0, they cannot be overridden by a class/interface that inherits them.
Giao diện có thể chứa hằng số không?Giao diện Java có thể chứa các hằng số . Trong một số trường hợp, việc xác định các hằng số trong một giao diện có thể hợp lý. Đặc biệt nếu các hằng số đó được sử dụng bởi các lớp triển khai giao diện, e. g. trong tính toán hoặc làm tham số cho một số phương thức trong giao diện.
Là giao diện Không thể chứa hằng số?Giao diện có thể chứa hàm tạo tĩnh, trường, hằng số hoặc toán tử . Bắt đầu với C# 11, các thành viên giao diện không phải là trường có thể là trừu tượng tĩnh. Một giao diện không thể chứa các trường mẫu, hàm tạo mẫu hoặc bộ hoàn thiện.
Giao diện CÓ THỂ có các thuộc tính trong PHP không?Giao diện không thể có thuộc tính , trong khi lớp trừu tượng có thể. Tất cả các phương thức giao diện phải công khai, trong khi các phương thức lớp trừu tượng là công khai hoặc được bảo vệ. Tất cả các phương thức trong một giao diện là trừu tượng, vì vậy chúng không thể được triển khai trong mã và từ khóa trừu tượng là không cần thiết. |