Đề XuấT, 2024

Editor Choice

Sự khác biệt giữa Giao diện và Lớp trừu tượng trong Java & C #

Cả lớp Giao diện và Trừu tượng đều góp phần tạo ra loại không hoàn chỉnh của Google trong OOP. Đôi khi, chúng ta cần một siêu lớp để định nghĩa những gì cần làm, nhưng không phải là cách làm thế nào, đó là cách thực hiện một phần sẽ được lớp dẫn xuất thực hiện theo nhu cầu của nó, giao diện của Lọ cung cấp một giải pháp cho việc này. Đôi khi chúng ta cần một lớp siêu lớp xác định một số cấu trúc tổng quát có thể được thực hiện bởi các lớp dẫn xuất và một số cấu trúc được chỉ định có thể được sử dụng bởi các lớp dẫn xuất, lớp trừu tượng Hồi giáo cung cấp một giải pháp cho điều này. Sự khác biệt cơ bản giữa giao diện và lớp trừu tượng là giao diện hoàn toàn không hoàn chỉnh và lớp trừu tượng không hoàn chỉnh một phần.

Biểu đồ so sánh

Cơ sở để so sánhGiao diệnLớp trừu tượng
Căn bảnKhi bạn chỉ có kiến ​​thức về các yêu cầu chứ không phải về việc thực hiện nó, bạn sử dụng "Giao diện".Khi bạn biết một phần về việc triển khai, bạn sử dụng "Các lớp trừu tượng".
Phương phápGiao diện chỉ chứa các phương thức trừu tượng.Lớp trừu tượng chứa các phương thức trừu tượng cũng như các phương thức cụ thể.
Công cụ sửa đổi truy cập của phương thứcCác phương thức giao diện luôn là "Công khai" và "Trừu tượng", ngay cả khi chúng tôi không khai báo. Do đó, có thể nói là 100%, lớp trừu tượng thuần túy.Không bắt buộc rằng phương thức trong lớp trừu tượng sẽ là công khai và trừu tượng. Nó có thể có phương pháp cụ thể cũng có.
Công cụ sửa đổi bị hạn chế cho các phương thứcMột phương thức giao diện không thể được khai báo với các sửa đổi sau:
Công khai: Riêng tư và được bảo vệ
Tóm tắt: cuối cùng, tĩnh, đồng bộ hóa, bản địa, rictfp.
Không có hạn chế về các sửa đổi của biến lớp trừu tượng.
Công cụ sửa đổi truy cập của biếnCông cụ sửa đổi Acess được phép cho các biến Giao diện là công khai, tĩnh & cuối cùng cho dù chúng tôi có khai báo hay không.Các biến trong lớp trừu tượng không cần phải công khai, tĩnh, cuối cùng.
Công cụ sửa đổi bị hạn chế cho các biếnCác biến giao diện không thể được khai báo là riêng tư, được bảo vệ, tạm thời, không ổn định.Không có hạn chế về các sửa đổi của các biến lớp trừu tượng.
Khởi tạo biếnCác biến giao diện phải được khởi tạo tại thời điểm khai báo.Không bắt buộc các biến lớp trừu tượng phải được khởi tạo tại thời điểm khai báo.
Sơ thẩm và khối tĩnhGiao diện bên trong, bạn không thể khai báo một thể hiện hoặc khối tĩnh.Lớp trừu tượng cho phép một thể hiện hoặc khối tĩnh bên trong nó.
Người xây dựngBạn không thể khai báo hàm tạo bên trong giao diện.Bạn có thể khai báo hàm tạo bên trong một lớp trừu tượng.

Định nghĩa giao diện

Java không cho phép nhiều kế thừa. Đó là, một lớp duy nhất không thể kế thừa nhiều hơn một lớp cùng một lúc. Lý do đằng sau điều này có thể được giải thích với một ví dụ. Giả sử chúng ta có hai lớp cha, A và B và một lớp dẫn xuất C. Lớp dẫn xuất C thừa hưởng cả hai lớp A và B. Bây giờ, cả hai đều có lớp A và B có tập phương thức (), sau đó sẽ là một câu hỏi đối với lớp C mà phương thức set () của lớp nên kế thừa. Giải pháp cho vấn đề này là giao diện trực tuyến.

Giao diện là một lớp trừu tượng thuần túy. Từ khóa được sử dụng để tạo giao diện là giao diện trực tuyến. Như tất cả các phương thức bên trong giao diện là hoàn toàn trừu tượng. Giao diện chỉ xác định những gì một lớp phải làm, nhưng nó không định nghĩa nó làm như thế nào. Chỉ vì tất cả các phương thức được khai báo bên trong giao diện là trừu tượng, không có trường hợp nào được tạo cho một giao diện. Hình thức chung của giao diện trên mạng trong java là:

 access_specifier interface interface_name {return-type method-name1 (danh sách tham số); return-type method-name2 (tham số-list); gõ Final-varname1 = value; gõ Final-varname2 = value; // ... return-type method-nameN (tham số-list); gõ cuối cùng-varnameN = value; } 

Trình xác định truy cập được khai báo công khai vì các lớp cần thực hiện giao diện.

Chúng tôi không có khái niệm về Giao diện Giao diện trực tuyến trong C ++. Nhưng, Java và C # xác định giao diện rất tốt.

Giao diện trong Java:

  • Các biến của một giao diện theo mặc định luôn là công khai, tĩnh và cuối cùng.
  • Các biến phải được khởi tạo tại thời điểm khai báo.
  • Các biến không bao giờ có thể được khai báo là riêng tư, được bảo vệ, thoáng qua và không ổn định.
  • Các phương thức của một giao diện luôn công khai và trừu tượng trong khi đó, chúng không bao giờ có thể được khai báo là riêng tư, được bảo vệ, cuối cùng, tĩnh, đồng bộ hóa, nguyên gốc và rictfp.
  • Bạn không thể khai báo bất kỳ hàm tạo nào bên trong giao diện vì mục đích chính của hàm tạo là khởi tạo các biến lớp nhưng, trong các biến giao diện được khởi tạo tại thời điểm khai báo.
  • Giao diện có thể kế thừa các giao diện khác, nhưng lớp thực hiện giao diện đó phải thực hiện các phương thức của tất cả các giao diện được kế thừa.
  • Một lớp có thể kế thừa nhiều giao diện cùng một lúc và nó phải thực hiện tất cả các phương thức của tất cả các giao diện được kế thừa.

Hình thức chung của việc triển khai một giao diện trong Java:

 class class_name thực hiện Interface_name {// class-body} 

Để kế thừa một giao diện, một lớp sử dụng một từ khóa mà ông thực hiện, và lớp này thực hiện tất cả các phương thức được khai báo bởi một giao diện được kế thừa.

Giao diện trong C #:

Giao diện trong C # gần giống với giao diện trong Java ngoại trừ:

  • Giao diện trong C # không khai báo biến.
  • Tên của giao diện có tiền tố I và được kế thừa bằng dấu hai chấm (:).

Hình thức chung của việc triển khai giao diện trong C #:

 class class_name: interface_name {// class-body} 

Định nghĩa của lớp trừu tượng

Một lớp có chứa một hoặc nhiều phương thức trừu tượng được gọi là lớp trừu tượng và một lớp được khai báo là trừu tượng bằng cách sử dụng từ khóa Tóm tắt trừu tượng, trước từ khóa lớp lớp Bắt đầu khi khai báo lớp. Vì lớp trừu tượng chứa phương thức trừu tượng, nó tạo thành một kiểu không hoàn chỉnh. Do đó, bạn không thể tạo các đối tượng của một lớp trừu tượng. Bất cứ khi nào một lớp kế thừa một lớp trừu tượng, nó phải thực hiện tất cả các phương thức trừu tượng của lớp trừu tượng nếu không thì nó cũng phải được khai báo là trừu tượng. Thuộc tính trừu tượng được kế thừa cho đến khi đạt được hoàn thành các phương thức trừu tượng.

Lớp trừu tượng cũng có thể chứa các phương thức cụ thể có thể được sử dụng bởi lớp dẫn xuất. Nhưng, bạn không thể khai báo một hàm tạo trừu tượng hoặc một phương thức tĩnh trừu tượng bên trong một lớp trừu tượng. Dạng chung của lớp trừu tượng trong Java như sau:

 lớp trừu tượng class_name {trừu tượng method_name1 (); phương thức trừu tượng_name2 (); : return_type method_name3 (tham số_list) {// phương thức cụ thể} return_type method_name4 (tham số_list) {// phương thức cụ thể}}; 

Khái niệm về một lớp trừu tượng là tương tự trong cả Java và C #. Một lớp trừu tượng hơi khác nhau trong C ++.

Trong C ++ nếu một lớp ít nhất có một hàm ảo thì lớp đó trở thành một lớp trừu tượng. Thay vì từ khóa, trừu tượng, thì từ khóa ảo được sử dụng để khai báo một phương thức trừu tượng.

Sự khác biệt chính giữa Giao diện và Lớp trừu tượng trong Java & C #

  1. Khi bạn có kiến ​​thức về những gì được yêu cầu, nhưng không phải về cách thức thì nó sẽ được triển khai như thế nào thì giao diện phải được sử dụng. Mặt khác, nếu bạn biết những gì được yêu cầu và một phần biết nó sẽ được thực hiện như thế nào thì hãy sử dụng một lớp trừu tượng.
  2. Một giao diện có tất cả các phương thức trừu tượng nhưng, một lớp trừu tượng có một số phương thức trừu tượng và một số phương thức cụ thể.
  3. Các phương thức bên trong một giao diện là công khai và trừu tượng do đó, nó cũng được gọi là một lớp trừu tượng thuần túy. Mặt khác, các phương thức bên trong một bản tóm tắt không bị giới hạn chỉ mang tính công khai và trừu tượng.
  4. Một phương thức giao diện không bao giờ có thể là riêng tư, được bảo vệ, cuối cùng, tĩnh, đồng bộ hóa, gốc hoặc rictfp. Mặt khác, không có hạn chế nào đối với các phương thức của một lớp trừu tượng.
  5. Các biến trong một giao diện là công khai và cuối cùng cho dù chúng ta có khai báo chúng hay không trong khi đó, không có hạn chế nào như vậy đối với các biến của một lớp trừu tượng là công khai và cuối cùng.
  6. Các biến trong một giao diện không bao giờ có thể được bảo vệ riêng tư thoáng qua hoặc biến động trong khi đó, không có hạn chế nào đối với các biến trong một lớp trừu tượng.
  7. Biến của một giao diện phải được khởi tạo trong khi khai báo. Mặt khác, các biến trong một lớp trừu tượng có thể được khởi tạo bất cứ lúc nào.
  8. Trong một giao diện, một thể hiện hoặc khối tĩnh không thể được khai báo nhưng, bạn có thể khai báo thể hiện hoặc khối tĩnh bên trong một lớp trừu tượng.
  9. Bạn không thể định nghĩa hàm tạo bên trong một giao diện trong khi đó, bạn có thể định nghĩa hàm tạo bên trong một lớp trừu tượng.

Phần kết luận:

Khi bạn cần tạo một lớp cơ sở chứa một dạng phương thức tổng quát có thể được thực hiện bởi các lớp dẫn xuất theo nhu cầu của chúng, khái niệm giao diện và lớp trừu tượng sẽ giúp thực hiện điều đó.

Top