Hai ông lớn!

Interface vs Abstract – Sự khác biệt nằm ở cách sử dụng!

A.Interface:

1.Sử dụng từ khóa “interface” để khai báo cho một interface; việc này cũng giống như khai báo class thì sử dụng “class”. Nhưng điều khác nhau ở chỗ: một interface không có phần thân cho các phương thức (việc khai báo đơn giản chỉ là khai báo) và không thể tạo đối tượng cho interface.

2.Interface quy định hành vi chung của các lớp triển khai nó và sử dụng “implements” để triển khai 1 interface. Một lớp triển khai interface thì cần triển khai tất cả các phương thức được khai báo trong interface đó.

3.Interface có thể được thiết kế để khai báo các phương thức chung cho các lớp không liên quan tới nhau. Và tất nhiên Interface bổ sung cho việc PHP không có tính đa kế thừa.

4.Một class implement nhiều interfacce, trong lớp định nghĩa rõ nội dung của các hàm.

5.Interface có thể kế thừa từ interface khác và interface con nó thừa hưởng các phương thức và hằng số được khai báo trong interface khác. Interface con có thể khai báo thêm các thành phần mới. “extends” cũng được dùng để kế thừa interface.

B. Abstract:

1.Lớp trừu trượng – Abstract class: Các “đời” trước càng trừu tượng cao hơn, tính cụ thể ít đi và chung chung các “đời” sau.

2.Lớp trừ tượng – Abstract class: không thể tạo đối tượng cho nó nhưng nó có thể có các thuộc tính và phương thức như bình thường.

3.Abstract method: là những phương thức được khai báo không có phần thân nhưng nó lại được bổ sung ở các lớp con.

4.“abstract” được sử dụng để khai báo lớp trừu tượng và phương thức trừu tượng. Lớp chứa phương thức Abstract thì phải là lớp abstract hay lớp con không phải abstract kế thừa từ lớp cha là abstract thì phải implement tất cả các phương thức abstract của lớp cha.

5.Lớp con abstract kế thừa lớp cha abstract thì có thể không implement các phương thức abstract của lớp cha.
6.Lớp abstract và phương thức abstract thì không thể là final (chống kế thừa)

C. Việc chọn sử dụng interface hay abstract cũng phục thuộc vào từng trường hợp: có thể chuyển đổi giữa việc sử dụng 1 trong 2 “ông” này!

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

Facebook