Bài 16. Phân biệt abstract và interface trong PHP

Interface và Abstract là hai khái niệm chúng ta đã tìm hiểu ở bài học Abstract class trong PHP - Lớp trừu tượng  và Interface trong PHP. 
Ở hai bài học đó, chúng ta chỉ mới tìm hiểu về cách sử dụng Abstract và Interface như thế nào. Vậy sự khác nhau giữa chúng ra sao và khi nào thì sử dụng Interface, khi nào sử dụng Abstract, thì ở bài học này chúng ta sẽ cùng đi làm rõ vấn đề này.
Khi nào sử dụng Abstract.
Giả sử, tôi muốn xây dựng một hệ thống Animals (Động vật). Bạn nhận thấy, là động vật sẽ có nhiều đặc điểm chung như có tên, có tiếng kêu, có chân,... Nhưng những đặc điểm này chỉ xác định khi nó thuộc một đối tượng cụ thể. Bạn nói "Nó" có tên, nhưng cái gì có tên ? Chó có tên, Mèo có tên, Khỉ có tên... Nhưng động vật chung chung thì không thể có tên.
Lúc này, Animals là class abstract ( một cái trừu tượng ) đại diện cho cái chung chung đó.


hoc PHP, ngon ngu PHP, code PHP, php nang cao, php tips


Khi nào sử dụng Interface
Tiếp theo, Bạn sẽ được yêu cầu mở một sở thú, trong đó các con vật. Đến một ngày, bạn sẽ yêu cầu bọn chúng xếp hàng và điểm danh, không cần biết nó là chó hay mèo, chỉ cần nó là động vật.
Trong mớ Animals, có con sẽ biết bơi, có con không biết. Như Chó với Mèo chẳng hạn. Thế nên, đây là những thuộc tính không thể để chung, nhưng cũng không nên để riêng, vì còn nhiều con khác biết bơi mà.
Lúc này, bạn sẽ tạo một interface Swim. Và bạn muốn con nào biết bơi thì bạn implements cho nó là ok.
Ví dụ.


hoc PHP, ngon ngu PHP, code PHP, php nang cao, php tips


Tóm lại, Abstract class là một cái trừu tượng, chung chung cho những cái cụ thể! và bạn chắc chắn rằng, nó không phải  thật ! Bạn không thể tạo một động vật, nhưng bạn có thể tạo một con mèo, một con chó...
Interface giống như các khả năng mà một đối tượng có thể có, như chó có thể bơi, mèo có thể trèo cây...
Download source code demo

 HỖ TRỢ TRỰC TUYẾN