PHP OOP - Giao diện
PHP - Giao diện là gì?
Các giao diện cho phép bạn chỉ định những phương thức mà một lớp nên triển khai.
Các giao diện giúp bạn dễ dàng sử dụng nhiều lớp khác nhau theo cùng một cách. Khi một hoặc nhiều lớp sử dụng cùng một giao diện, nó được gọi là "đa hình".
Các giao diện được khai báo bằng từ khóa interface
:
Cú pháp
<?php
interface InterfaceName {
public function someMethod1();
public function someMethod2($name, $color);
public function
someMethod3() : string;
}
?>
PHP - Giao diện so với các lớp trừu tượng
Giao diện tương tự như các lớp trừu tượng. Sự khác biệt giữa giao diện và lớp trừu tượng là:
- Giao diện không thể có thuộc tính, trong khi các lớp trừu tượng có thể
- Tất cả các phương thức giao diện phải ở chế độ 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 đều trừu tượng, vì vậy chúng không thể được triển khai bằng mã và từ khóa trừu tượng là không cần thiết
- Các lớp có thể triển khai một giao diện đồng thời kế thừa từ một lớp khác
PHP - Sử dụng giao diện
Để triển khai một giao diện, một lớp phải sử dụng từ khóa implements
.
Một lớp triển khai một giao diện phải triển khai tất cả các phương thức của giao diện đó.
Ví dụ
<?php
interface Animal {
public function makeSound();
}
class Cat implements Animal {
public function makeSound() {
echo "Meow";
}
}
$animal = new Cat();
$animal->makeSound();
?>
Hãy tự mình thử »Từ ví dụ trên, giả sử chúng ta muốn viết phần mềm quản lý một nhóm động vật. Có những hành động mà tất cả các loài động vật đều có thể làm nhưng mỗi loài lại thực hiện theo cách riêng của mình.
Bằng cách sử dụng các giao diện, chúng ta có thể viết một số mã có thể hoạt động cho tất cả các loài động vật ngay cả khi mỗi loài có hành vi khác nhau:
Ví dụ
<?php
// Interface definition
interface Animal {
public
function makeSound();
}
// Class definitions
class Cat
implements Animal {
public function makeSound() {
echo " Meow ";
}
}
class Dog implements Animal {
public function makeSound()
{
echo " Bark ";
}
}
class Mouse implements Animal {
public function makeSound() {
echo " Squeak ";
}
}
// Create a list
of animals
$cat = new Cat();
$dog = new Dog();
$mouse = new
Mouse();
$animals = array($cat, $dog, $mouse);
// Tell the animals
to make a sound
foreach($animals as $animal) {
$animal->makeSound();
}
?>
Hãy tự mình thử »Ví dụ giải thích
Cat, Dog và Mouse đều là các lớp triển khai giao diện Animal, có nghĩa là tất cả chúng đều có thể tạo ra âm thanh bằng phương thức makeSound()
. Nhờ đó, chúng ta có thể lặp lại tất cả các loài động vật và yêu cầu chúng phát ra âm thanh ngay cả khi chúng ta không biết mỗi loài là loại động vật nào.
Vì giao diện không cho các lớp biết cách triển khai phương thức nên mỗi con vật có thể tạo ra âm thanh theo cách riêng của mình.