Hướng đối tượng trong PHP: interface, asbtract class

Hướng đối tượng trong PHP: interface, asbtract class

Interface

Interface là một lớp rỗng chỉ chứa khai báo về tên phương thức không có khai báo về thuộc tính hay thứ gì khác và các phương thức này cũng là rỗng. Bởi vậy bất kỳ lớp nào sử dụng lớp interface đều phải định nghĩa các phương thức đã khai báo ở lớp interface, nếu cố tình không khai báo thì PHP sẽ báo lỗi, để sử dụng lớp interface bạn chỉ việc khai báo với từ khóa implements và một lớp có thể sử dụng nhiều interface cũng như vừa có thể kế thừa từ lớp khác và đồng thời sử dụng interface. Ví dụ:

interface a{
    public function pa();
}
interface b{
    public function pb();
}
class c{
    public function pc(){
        echo 'phuong thuc pc cua lop c';
    }
}
class d extends c implements a,b{
    public function pa(){
        echo 'phuong thuc pa duoc khai bao interface';
    }
    public function pb(){
        echo 'phuong thuc pb duoc khai bao interface';
    }
    public function pd(){
        echo 'phuong thuc pc cua lop d';
    }
}
$s = new d();
$s->pc();

Abstract class

Lớp asbtract cũng gần giống như interface, ngoại trừ nó có thể chứa phương thức và thuộc tính thông thường.

Trong lớp asbtract chứa các phương thức asbtract chúng cũng rỗng giống như phương thức trong interface, vậy nên khi một lớp kế thừa từ lớp asbtract thì bắt buộc phải định nghĩa phương thức đã khai báo ở lớp abstract.

Một lớp asbtract khi sử dụng cũng như kế thừa bạn khai báo với từ khóa "extends" điều này không giống như interface. Ví dụ:

abstract class a{
    protected $vara = 'pa2() cua lop a';
    abstract function pa();
    protected function pa2(){
        return $this->vara;
    }
}
class b extends a{
    public function pa(){
        echo 'pa() duoc khai bao abtract o lop a';
    }
    public function pb(){
        echo $this->pa2();
    }
}
$s = new b();
$s->pb();

Một điều chú ý nữa là bạn có thể sử dụng cả interface và kế thừa lớp abstract trong cùng một lớp.

Vậy ứng dụng của interface và abstract class để làm gì khi ta có thể xây dựng các lớp cơ sở và sau đó xây dựng các lớp kế thừa một cách thông thường ? vấn đề ở đây chính là tính chặt chẽ của mô hình khi chúng ta có những phương thức chung để định nghĩa cho một cái gì đó mà nó có các cá thể bắt buộc phải có những đặc điểm trên.

Tham khảo "object-oriented programming with PHP5 _ Hasin Hayder".

Bạn thấy bài viết này như thế nào?: 
Average: 9 (7 votes)
Ảnh của Khanh Hoang

Khanh Hoang - Kenn

Kenn is a user experience designer and front end developer who enjoys creating beautiful and usable web and mobile experiences.

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Security Vulnerabilities Affect Your Dev Sites Too | mydropwizard.com

Security Vulnerabilities Affect Your Dev Sites Too | mydropwizard.com

Due to the nature of the vulnerability, from the largest of enterprise applications to the smallest of brochure or hobbyist site builds, all Drupal sites were affected.

Android là hệ điều hành bị virus tấn công nhiều nhất

Android là hệ điều hành bị virus tấn công nhiều nhất

Hệ điều hành di động của Google, Android, thống trị thị trường và bị tấn công mạnh nhất bởi virus “con ngựa thành Troy” và hàng loạt virus khác.

Người mẫu Prodan muốn làm bà chủ CLB FC Hermannstadt tại Romania

Người mẫu Prodan muốn làm bà chủ CLB FC Hermannstadt tại Romania

Nữ đại diện, người mẫu Playboy Anamaria Prodan muốn làm bà chủ CLB FC Hermannstadt

Công ty diệt chuột T&C

 

Diet con trung