Lớp trừu tượng trong php

Abstraction and interfaces are two very different tools. The are as close as hammers and drills. Abstract classes may have implemented methods, whereas interfaces have no implementation in themselves.

Abstract classes that declare all their methods as abstract are not interfaces with different names. One can implement multiple interfaces, but not extend multiple classes (or abstract classes).

The use of abstraction vs interfaces is problem specific and the choice is made during the design of software, not its implementation. In the same project you may as well offer an interface and a base (probably abstract) class as a reference that implements the interface. Why would you do that?

Let us assume that we want to build a system that calls different services, which in turn have actions. Normally, we could offer a method called execute that accepts the name of the action as a parameter and executes the action.

We want to make sure that classes can actually define their own ways of executing actions. So we create an interface IService that has the execute method. Well, in most of your cases, you will be copying and pasting the exact same code for execute.

We can create a reference implemention for a class named Service and implement the execute method. So, no more copying and pasting for your other classes! But what if you want to extend MySLLi?? You can implement the interface (copy-paste probably), and there you are, again with a service. Abstraction can be included in the class for initialisation code, which cannot be predefined for every class that you will write.

________số 8

Lớp Phiếu vật có thể khai báo các thuộc tính và các phương thức bình thường và không có tính chất chèm đối tượng (Lớp nhật vật không cho phép khởi tạo tham số, chỉ khai báo mà thôi)

  • Bên cạnh đó nó không cho phép tạo thể hiện, nghĩa là sẽ không thể tạo ra các đối tượng thuộc lớp đó. Ví dụ Animal là 1 lớp hiện vật thì không thể khai báo. $animal = new Animal

  • Các phương thức được định nghĩa là trừu tượng trong lớp trừu tượng thì chỉ khai báo tên hàm và không viết nội dung hàm trong đó. Nội dung chia sẻ được viết trong lớp kế thừa khi ghi đè lại phương thức đó

  • Mình có 1 cái ví dụ đơn giản như thế này

    2. Giao diện là gì ?

    • Giao diện không phải là 1 lớp. Nó được mô tả là 1 bản thiết kế cho các lớp có chung cách thức hoạt động
    • Vì không phải là 1 lớp nên không thể định nghĩa các thuộc tính, khởi tạo đối tượng mà chỉ khai báo các phương thức
    • Các phương thức chỉ khai báo tên hàm và không viết nội dung hàm trong đó
    • Không có khái niệm phạm vi của phương thức, tất cả đều là công khai
    • Lớp con kế thừa từ giao diện chia sẻ phải ghi đè tất cả các phương thức trong đó
    • Một lớp có thể kế thừa từ nhiều giao diện khác nhau bằng từ khóa thực hiện

    Mình củng có ví dụ đơn giản về giao diện

    Khi nào sử dụng giao diện và khi nào sử dụng Lớp trừu tượng

    Đọc xong cái chồng trên kia chắc bạn đang tự hỏi. Do vậy Abstract và Interface có cách sử dụng khá giống nhau. Vì sao phải tạo ra 2 cái làm gì ?

    Hướng dẫn dùng abstract class trong PHP

    .
    • Nhìn chung lớp trừu tượng và giao diện đều được coi như 1 "bản thiết kế" cho các lớp kế thừa nó

    Vì sao gọi lại là "bản thiết kế"?

    • Gọi là "bản thiết kế" vì ví dụ như trong 1 dự án, bạn muốn ép người lập trình phải tuân thủ theo một số phương thức và các phương thức này đã được xác định sẵn những cơ bản thứ cấp, để giúp cho . Thì bạn phải tạo ra các lớp hoặc giao diện trừu tượng và liệt kê các phương thức cần thiết trong đó. Do lớp trừu tượng và giao diện đó chỉ chứa các báo cáo mà không quan tâm đến các bên trong các hàm thực hiện những gì

    Abstract Class là "bản thiết kế" cho Class

    • Về bản chất thì lớp trừu tượng là 1 lớp nên nó có thể khai báo thêm các thuộc tính và phương thức khác không phải đối tượng. Nó được coi là "bản thiết kế" cho lớp vì những lớp này mở rộng lại từ bên ngoài của nó ghi đè lại các phương thức hiển thị đối tượng của nó thì vẫn có thể sử dụng các thuộc tính của nó
    • Trong ví dụ lớp trừu tượng ở trên, 2 lớp kế thừa lớp trừu tượng Animal đều có cùng bản chất là động vật. Chúng ta có thể sử dụng biến
      0 trong lớp trừu tượng Animal

    Giao diện là "bản thiết kế" cho Phương thức

    • Giao diện không phải là lớp nên chỉ dùng để khai báo các phương thức. Nó được coi là "bản thiết kế" cho phương thức vì những lớp này thực hiện lại nó đều phải ghi đè lại các phương thức của nó
    • Trong ví dụ giao diện ở trên, 2 lớp kế thừa từ giao diện Move không có cùng chất lượng. 1 thuộc tính object và 1 class thuộc tiện ích đi lại. Nhưng chúng có chung hành động là
      1

    Kết luận

    Sau khi đọc bài viết này, hy vọng các bạn sẽ chia sẻ hiểu biết hơn về lớp trừu tượng và giao diện. Bài viết nhiều chữ nên chắc khó gây bực bội nhưng tổng kết lại chỉ có 1 số ý sau