Hướng dẫn php interface vs abstract class - giao diện php so với lớp trừu tượng

Introduction 

Trước khi lặn sâu vào sự khác biệt giữa lớp trừu tượng và giao diện, bạn phải hiểu một điều cơ bản: đây là hai lớp hoàn toàn khác nhau không thể được sử dụng thay thế cho nhau., you must understand one basic thing: these are two completely different classes that cannot be used as an alternative to one another.

Các lớp giao diện hoàn toàn làm trống vỏ trong khi mong đợi các lớp con sẽ thực hiện mọi thứ cho chúng. Các lớp trừu tượng không chỉ chứa phần thông tin phổ biến giữa các vỏ bên trong mà còn mong các lớp con bên trong điền vào các khoảng trống.

Hãy để chúng tôi lặn sâu hơn một chút để thực sự hiểu được sự khác biệt một cách tinh tế.

Nếu bạn muốn đọc về các câu hỏi về mảng PHP thì bạn có thể truy cập ở đây. Điều này sẽ giúp bạn bẻ khóa các cuộc phỏng vấn PHP của bạn.

Lớp giao diện

Như chúng ta đã biết, một giao diện thực sự được xác định bởi một từ khóa giao diện trong đó tất cả các phương thức là trừu tượng. Ngoài ra, tất cả các phương thức được khai báo trong loại lớp này phải được khai báo ở nơi công cộng, phản ánh bản chất thực sự của một giao diện.

Hãy giúp đỡ để chứng minh rằng với một ví dụ:

  1. interface Logger {   Logger {  
  2.     public  public  
  3.     function execute();  function execute();  
  4. }  

Như bạn có thể thấy ở trên, trong giao diện, thân phương thức không được xác định. Chỉ có tên và các tham số đang được xác định. Bây giờ, chúng ta hãy chuyển sang lớp trừu tượng.

Lớp học trừu tượng

Trong PHP, một lớp trừu tượng là một lớp được thực hiện một phần bởi bất kỳ nhà phát triển nào. Nó có thể chứa ít nhất một phương thức trừu tượng về cơ bản là một phương thức mà không có bất kỳ mã bằng văn bản nào. Nó chỉ chứa tên và các tham số và đã được đánh dấu là Tóm tắt.

Theo định nghĩa, một lớp trừu tượng chỉ đơn giản là một định nghĩa hàm có mục đích phục vụ lập trình viên bằng cách nói với họ phương pháp trong câu hỏi phải được thực hiện trong một lớp con.

Dưới đây là một ví dụ để chứng minh lớp trừu tượng:

  1. abstract class AbstractClass {   class AbstractClass {  
  2.     abstract protected  abstract protected  
  3.     function getValue();  function getValue();  
  4.     public  public  
  5.     function printOut() {  function printOut() {  
  6.         print $this - > getValue().  this - > getValue().  
  7. & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;"\n";  
  8.     }  
  9. }  

Bây giờ bạn đã làm quen với một lớp giao diện trừu tượng, đã đến lúc đi sâu vào sự khác biệt của họ, từng bước.

Ở đây, một bảng mô tả sự khác biệt giữa lớp trừu tượng và giao diện trong PHP.

Lớp giao diện

Lớp học trừu tượng

Trong PHP, một lớp trừu tượng là một lớp được thực hiện một phần bởi bất kỳ nhà phát triển nào. Nó có thể chứa ít nhất một phương thức trừu tượng về cơ bản là một phương thức mà không có bất kỳ mã bằng văn bản nào. Nó chỉ chứa tên và các tham số và đã được đánh dấu là Tóm tắt.

Theo định nghĩa, một lớp trừu tượng chỉ đơn giản là một định nghĩa hàm có mục đích phục vụ lập trình viên bằng cách nói với họ phương pháp trong câu hỏi phải được thực hiện trong một lớp con.

Dưới đây là một ví dụ để chứng minh lớp trừu tượng:

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

Bây giờ bạn đã làm quen với một lớp giao diện trừu tượng, đã đến lúc đi sâu vào sự khác biệt của họ, từng bước.

Ở đây, một bảng mô tả sự khác biệt giữa lớp trừu tượng và giao diện trong PHP.

Lớp giao diện hỗ trợ nhiều tính năng kế thừa

Lớp trừu tượng không hỗ trợ nhiều kế thừa.

Điều này không chứa một thành viên dữ liệu.

Lớp trừu tượng có chứa một thành viên dữ liệu.

Giao diện không cho phép container.

Lớp trừu tượng hỗ trợ các container.

Conclusion 

Một lớp giao diện chỉ chứa các thành viên chưa hoàn chỉnh đề cập đến chữ ký của thành viên.

Ngoài ra, chỉ muốn thêm ở đây chỉ vì bất kỳ ngôn ngữ OO nào khác có một số loại giao diện và sự trừu tượng không có nghĩa là chúng có cùng ý nghĩa và mục đích như trong PHP. Việc sử dụng trừu tượng/giao diện hơi khác nhau trong khi các giao diện trong PHP thực sự không có chức năng thực. Chúng chỉ được sử dụng cho các lý do liên quan đến ngữ nghĩa và sơ đồ. Vấn đề là có một dự án linh hoạt nhất có thể, có thể mở rộng và an toàn cho các phần mở rộng trong tương lai bất kể nhà phát triển sau này có kế hoạch sử dụng hoàn toàn khác hay không.

Nếu tiếng Anh của bạn không phải là người bản địa, bạn có thể tìm kiếm sự trừu tượng và giao diện thực sự là gì. Và tìm kiếm từ đồng nghĩa quá.

Và điều này có thể giúp bạn như một phép ẩn dụ:

Giao diện

Giả sử, bạn nướng một loại bánh mới với dâu tây và bạn đã tạo nên một công thức mô tả các thành phần và bước. Chỉ có bạn biết tại sao nó nếm rất ngon và khách của bạn thích nó. Sau đó, bạn quyết định xuất bản công thức của mình để người khác cũng có thể thử chiếc bánh đó.

Điểm ở đây là

- để làm cho nó đúng - cẩn thận - để ngăn chặn những thứ có thể trở nên tồi tệ (như quá nhiều dâu tây hoặc một cái gì đó) - để giữ cho những người thử nó dễ dàng ) - để nói những điều bạn có thể làm nhưng không cần phải
- to be careful
- to prevent things which could go bad (like too much strawberries or something)
- to keep it easy for the people who try it out
- to tell you how long is what to do (like stiring)
- to tell which things you CAN do but don't HAVE to

Chính xác đây là những gì mô tả giao diện. Đó là một hướng dẫn, một tập hợp các hướng dẫn quan sát nội dung của công thức. Tương tự như khi bạn sẽ tạo một dự án trong PHP và bạn muốn cung cấp mã trên GitHub hoặc với bạn tình của bạn hoặc bất cứ điều gì. Một giao diện là những gì mọi người có thể làm và những gì bạn không nên. Các quy tắc giữ nó - nếu bạn không vâng lời, toàn bộ cấu trúc sẽ bị phá vỡ.

Trừu tượng hóa

Để tiếp tục với phép ẩn dụ này ở đây ... hãy tưởng tượng, bạn là khách lần này ăn chiếc bánh đó. Sau đó, bạn đang thử chiếc bánh đó bằng công thức bây giờ. Nhưng bạn muốn thêm các thành phần mới hoặc thay đổi/bỏ qua các bước được mô tả trong công thức. Vậy điều gì đến tiếp theo? Lên kế hoạch cho một phiên bản khác của chiếc bánh đó. Lần này với quả mọng đen và không phải quả rơm và kem vani hơn ... ngon.

Đây là những gì bạn có thể xem xét một phần mở rộng của bánh ban đầu. Về cơ bản, bạn thực hiện một sự trừu tượng của nó bằng cách tạo ra một công thức mới bởi vì nó khác nhau. Nó có một vài bước mới và các thành phần khác. Tuy nhiên, phiên bản Black Berry có một số phần bạn đã đảm nhận từ bản gốc - đây là những bước cơ bản mà mọi loại bánh đó phải có. Giống như các thành phần giống như sữa - đó là những gì mà mọi lớp có nguồn gốc đều có.

Bây giờ bạn muốn trao đổi các thành phần và các bước và chúng phải được xác định trong phiên bản mới của chiếc bánh đó. Đây là những phương pháp trừu tượng phải được xác định cho bánh mới, bởi vì cần có một loại trái cây trong bánh nhưng cái nào? Vì vậy, bạn lấy quả mọng đen lần này. Xong.abstract methods which have to be defined for the new cake, because there should be a fruit in the cake but which? So you take the black berries this time. Done.

Ở đó bạn đi, bạn đã mở rộng bánh, làm theo giao diện và các bước và nguyên liệu trừu tượng từ nó.

Cái nào tốt hơn để sử dụng lớp trừu tượng hoặc giao diện?

Các lớp trừu tượng nên được sử dụng chủ yếu cho các đối tượng có liên quan chặt chẽ, trong khi các giao diện phù hợp nhất để cung cấp một chức năng chung cho các lớp không liên quan. Giao diện là một lựa chọn tốt khi chúng tôi nghĩ rằng API sẽ không thay đổi trong một thời gian.. Interfaces are a good choice when we think that the API will not change for a while.

Sự khác biệt giữa giao diện và lớp trừu tượng là gì?

Giao diện: Khám phá sự khác biệt giữa lớp trừu tượng và giao diện trong Java.Cả lớp trừu tượng và giao diện đều được sử dụng để có sự trừu tượng.Một lớp trừu tượng chứa một từ khóa trừu tượng trên khai báo trong khi giao diện là một bản phác thảo được sử dụng để thực hiện một lớp.An abstract class contains an abstract keyword on the declaration whereas an Interface is a sketch that is used to implement a class.

PHP có các lớp trừu tượng không?

PHP - Các lớp và phương pháp trừu tượng là gì?Các lớp và phương pháp trừu tượng là khi lớp cha có một phương thức được đặt tên, nhưng cần (các) lớp con của nó để điền vào các nhiệm vụ.Một lớp trừu tượng là một lớp chứa ít nhất một phương pháp trừu tượng.An abstract class is a class that contains at least one abstract method.

PHP có giao diện không?

Giao diện PHP xác định một hợp đồng mà một lớp phải thực hiện.Nếu một lớp PHP là bản thiết kế cho các đối tượng, giao diện là bản thiết kế cho các lớp.Bất kỳ lớp nào thực hiện một giao diện nhất định đều có thể được dự kiến có hành vi tương tự về những gì có thể được gọi, cách gọi nó và những gì sẽ được trả lại.. If a PHP class is a blueprint for objects, an interface is a blueprint for classes. Any class implementing a given interface can be expected to have the same behavior in terms of what can be called, how it can be called, and what will be returned.