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

 
Khoảng 20.000 website có thể đã bị bẻ khóa và nhiễm mã độc

Khoảng 20.000 website có thể đã bị bẻ khóa và nhiễm mã độc

Google cảnh báo, khoảng 20.000 website có thể đã bị bẻ khóa và nhiễm mã độc thông qua ngôn ngữ JavaScript.

Cloud computing là một mô hình tính toán thương mại

Cloud computing là một mô hình tính toán thương mại

Khái niệm cloud computing (điện toán đám mây) ra đời từ năm 2007. Nửa năm sau đó, cloud computing đã nhận được sự quan tâm vượt hẳn grid computing (điện toán lưới).

Samsung Announce Galaxy Y and Y Pro Android Smartphones

Samsung Announce Galaxy Y and Y Pro Android Smartphones

In line with its recently announced naming strategy, Samsung has revealed two entry-level Android smartphones, the Galaxy Y and the Galaxy Pro.

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

 

Diet con trung