class ten_lop implements ten_giao_dien{
//các thuộc tính
//cài đặt các phương thức của giao diện //cài đặt các phương thức khác
}
Interface (tiếp)
Chú ý:
– Các lớp cài đặt interface phải định nghĩa tất cả các phương thức có trong các interface đó.
• Nếu cài đặt không đủ tất cả các phương thức của interface thì lớp đó phải khai báo là abstract. Nếu không PHP sẽ báo một “Falta error”.
– Một interface có thể mở rộng (kế thừa) các interface khác bằng từ khóa extends.
– Một class có thể cài đặt nhiều hơn 1 interface
• Trong khai báo class, các interface ngăn cách nhau bằng dấu phẩy.
Interface (tiếp)
Chú ý:
– Tất cả các phương thức khai báo trong interface
đều phải khai báo với visibility là public.
– Các hằng của interface sử dụng giống như hằng của lớp ngoại trừ việc không thể override ở các lớp/interface cài đặt/kế thừa interface này.
Interface (tiếp)
Ví dụ 1:
interface IPhepToan{
public function cong($a, $b); public function nhan($a, $b); }
class Tinh1 implements IPhepToan { private $a = 2, $b = 1; public function cong($a, $b){
return $a+$b; }
public function nhan($a, $b){ return $a * $b;
} } }
Interface (tiếp)
Ví dụ 1:
class Tinh2 implements IPhepToan { private $a = 2, $b = 1; public function cong($a, $b){
return $a+$b; }
public function tru($a, $b){ return $a - $b; } } ? Interface (tiếp) Ví dụ 1:
interface IPhepToan2 extends IPhepToan{ public function tru($a, $b); }
class Tinh3 implements IPhepToan2 { private $a = 2, $b = 1; public function cong($a, $b){
return $a+$b; }
public function nhan($a, $b){ return $a * $b;
}
public function tru($a, $b){ return $a - $b;
Interface (tiếp)
Ví dụ 1:
interface IPhepToan3 {
public function chia($a, $b); }
class Tinh4 implements IPhepToan2, IPhepToan3{ private $a = 2, $b = 1;
public function cong($a, $b){ ... } public function nhan($a, $b){ ... } public function tru($a, $b){...} public function chia($a, $b){...} }
Interface (tiếp)
Ví dụ 2:
interface IHinhTron { const PI = 3.14;
public function chuVi($banKinh); }
class Tron1 implements IHinhTron { private $bkinh = 10;
const PI = 3.1415;
public function chuVi($bkinh){ ... } } echo IHinhTron::PI; echo Tron1::PI; ? Interface (tiếp) Ví dụ 3: interface IHinhTron { const PI = 3.14; }
class Tron1 implements IHinhTron {...} class Tron2 extends Tron1 {
const PI = 3.1415; } echo IHinhTron::PI; echo Tron2::PI; ? Interface (tiếp) Ví dụ 4: interface IHinhTron {
public function dienTich($a); }
interface IHinhVuong {
public function dienTich($a); }
class Hinh implements IHinhTron, IHinhVuong { public function dienTich($a){
//cài đặt phương thức dienTich nào??? }
}