Sự khác biệt giữa Lớp trừu tượng và Giao diện (Có bảng)

Sự khác biệt giữa Lớp trừu tượng và Giao diện (Có bảng)

Như chúng ta đã biết, tính trừu tượng đề cập đến việc triển khai bên trong tính năng và chỉ thể hiện tính thực tiễn cho người dùng. tức là nó hoạt động như thế nào (hiển thị, Tuy nhiên, giao diện cung cấp khả năng trừu tượng hóa hoàn toàn trong Java, điều mà các danh mục trừu tượng không thể thực hiện được.

Lớp trừu tượng vs Giao diện

 Sự khác biệt chính giữa Lớp trừu tượng và Giao diện là giao diện liên kết sẽ chỉ mở rộng một giao diện Java khác; danh mục trừu tượng liên kết sẽ phát triển một danh mục Java khác và triển khai nhiều giao diện Java. Các thành viên của giao diện Java khác nhau theo mặc định. Một danh mục trừu tượng Java sẽ có các thành viên danh mục như cá nhân, được bảo vệ, v.v.

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

Lớp trừu tượng là lớp có từ khóa trừu tượng trong phần khai báo. Ít nhất một phương thức trừu tượng, tức là các phương thức không có phần thân, phải có trong các lớp trừu tượng. Nó có thể có nhiều phương pháp cụ thể.

Bạn có thể sử dụng các lớp trừu tượng để tạo các bản thiết kế cho các lớp cụ thể. Tuy nhiên, phương thức trừu tượng phải được triển khai bởi lớp kế thừa.

Giao diện là bản thiết kế chi tiết cho một lớp có thể được sử dụng để tạo ra nó. Giao diện không có phương thức cụ thể (các phương thức có mã). Các phương thức của giao diện đều là các phương thức trừu tượng.

Không thể tạo giao diện. Mặt khác, các lớp thực hiện giao diện có thể được khởi tạo. Các biến thể hiện không bao giờ được sử dụng trong giao diện. Tuy nhiên, các biến cuối cùng tĩnh công khai (còn được gọi là biến lớp không đổi) có thể được sử dụng.

Lớp trừu tượng là gì?

Lớp trừu tượng là một khái niệm cơ bản trong lập trình hướng đối tượng (OOP), đóng vai trò là bản thiết kế hoặc mẫu cho các lớp khác. Nó là một lớp không thể được khởi tạo và có nghĩa là nó có thể được mở rộng hoặc phân lớp bởi các lớp khác. Các lớp trừu tượng xác định các thuộc tính và phương thức chung mà nhiều lớp liên quan sẽ chia sẻ trong một hệ thống phân cấp kế thừa.

Các đặc điểm và tính năng chính của các lớp trừu tượng bao gồm:

  1. Không thể khởi tạo: Một lớp trừu tượng không thể được sử dụng để tạo trực tiếp các đối tượng hoặc thể hiện. Thay vào đó, nó cung cấp một khuôn khổ để các lớp con kế thừa và triển khai các thuộc tính và phương thức của nó.
  2. Có thể chứa các phương thức trừu tượng: Các lớp trừu tượng bao gồm một hoặc nhiều phương thức trừu tượng. Khai báo phương thức mà không có bất kỳ chi tiết triển khai nào. Các lớp con phải cung cấp các triển khai cụ thể cho các phương thức trừu tượng này.
  3. Có thể bao gồm các phương pháp cụ thể: Các lớp trừu tượng cũng có thể có các phương thức cụ thể (được triển khai đầy đủ) mà các lớp con có thể kế thừa. Những phương thức này có thể cung cấp chức năng chung được chia sẻ bởi tất cả các lớp con.
  4. Được sử dụng để tái sử dụng mã: Các lớp trừu tượng thúc đẩy khả năng sử dụng lại mã và nguyên tắc DRY (Đừng lặp lại chính mình) bằng cách cho phép mã chung được xác định trong một lớp trừu tượng duy nhất và được chia sẻ giữa các lớp con liên quan.
  5. Di sản: Các lớp con kế thừa các thuộc tính và phương thức được định nghĩa trong một lớp trừu tượng. Điều này cho phép chuyên môn hóa và tùy chỉnh hành vi trong khi vẫn duy trì cấu trúc chung.
  6. Các lớp trừu tượng và cụ thể: Các lớp trừu tượng được phân biệt với các lớp cụ thể, có thể được khởi tạo trực tiếp. Các lớp cụ thể cung cấp cách triển khai đầy đủ cho tất cả các phương thức của chúng.

Trong các ngôn ngữ như Java và C#, từ khóa “abstract” định nghĩa các lớp trừu tượng. Các lớp trừu tượng là những công cụ có giá trị để xây dựng hệ thống phân cấp của các lớp liên quan có chung các đặc điểm và hành vi chung, đồng thời cho phép tùy chỉnh và chuyên môn hóa trong các lớp dẫn xuất.

Giao diện là gì?

Giao diện là một khái niệm cơ bản trong lập trình hướng đối tượng (OOP) xác định một hợp đồng hoặc tập hợp các chữ ký phương thức phải được triển khai bởi bất kỳ lớp nào tuân thủ giao diện. Các giao diện cung cấp một cách để đạt được tính đa kế thừa trong các ngôn ngữ không hỗ trợ trực tiếp và chúng thúc đẩy tính trừu tượng hóa mã, tính mô đun và tính linh hoạt.

Các tính năng và đặc điểm chính của giao diện bao gồm:

  1. Chữ ký phương thức: Một giao diện xác định một tập hợp các chữ ký phương thức mà không có chi tiết triển khai. Các chữ ký phương thức này thể hiện một tập hợp các hành vi mà các lớp triển khai phải cung cấp.
  2. Nghĩa vụ hợp đồng: Khi một lớp triển khai một giao diện, nó phải cung cấp các triển khai cụ thể cho tất cả các phương thức được định nghĩa trong giao diện đó. Nếu không làm như vậy sẽ dẫn đến lỗi biên dịch.
  3. Nhiều thừa kế: Không giống như các lớp hỗ trợ kế thừa đơn (mở rộng một lớp), một lớp có thể triển khai nhiều giao diện. Điều này cho phép một lớp kế thừa và cung cấp nhiều tập hợp hành vi.
  4. Trừu tượng hóa và đa hình: Các giao diện thúc đẩy sự trừu tượng hóa bằng cách tách biệt “cái gì” (chữ ký phương thức) khỏi “làm thế nào” (triển khai phương thức). Sự trừu tượng hóa này cho phép đa hình, trong đó các đối tượng của các lớp khác nhau triển khai cùng một giao diện có thể được xử lý thay thế cho nhau.
  5. Khả năng sử dụng lại mã: Các giao diện tạo điều kiện thuận lợi cho việc sử dụng lại mã bằng cách xác định các hành vi phổ biến mà các lớp khác nhau có thể thực hiện. Điều này thúc đẩy nguyên tắc DRY (Đừng lặp lại chính mình).
  6. Thích ứng với văn hoá: Giao diện cho phép mã được ghép nối lỏng lẻo bằng cách cho phép các lớp có thể thay thế cho nhau dựa trên giao diện mà chúng triển khai. Tính linh hoạt này đặc biệt hữu ích trong việc thiết kế các hệ thống mô-đun và có thể mở rộng.

Giao diện được sử dụng rộng rãi trong các ngôn ngữ như Java, C# và TypeScript để xác định và thực thi hợp đồng giữa các lớp, đảm bảo rằng chúng tuân thủ một API cụ thể (Giao diện lập trình ứng dụng) và chia sẻ các hành vi phổ biến đồng thời cho phép triển khai đa dạng.

Bảng so sánh giữa lớp trừu tượng và giao diện

 Các thông số của sự khác biệtLớp trừu tượngGiao thức
Thuyết minhKhông thể khởi tạo trực tiếp.Nó không thể được khởi tạo trực tiếp.
Mục đíchPhục vụ như một kế hoạch chi tiết cho các lớp khác và có thể cung cấp cả hai khai báo phương thức có hoặc không có phần triển khai.Nó không thể được khởi tạo trực tiếp.
Phương phápCó thể có các phương thức trừu tượng (chưa được thực hiện), các phương thức cụ thể (được thực hiện) hoặc kết hợp cả hai.Chỉ chứa chữ ký phương thức mà không có bất kỳ triển khai nào; tất cả các phương pháp đều hoàn toàn trừu tượng.
Nhiều người thừa kếHỗ trợ kế thừa đơn; một lớp chỉ có thể mở rộng một lớp trừu tượng.Hỗ trợ đa kế thừa; một lớp có thể thực hiện nhiều giao diện.
Người xây dựngCó thể có các hàm tạo, được gọi khi một phiên bản của lớp con được tạo.Không thể có hàm tạo vì chúng không thể được khởi tạo trực tiếp.
Khả năng tái sử dụng mãThúc đẩy khả năng sử dụng lại mã bằng cách cho phép chia sẻ mã chung giữa các lớp liên quan.Thúc đẩy khả năng sử dụng lại mã bằng cách xác định các tập hợp hành vi chung mà các lớp phải triển khai.
Linh hoạtCung cấp sự cân bằng giữa tính trừu tượng và cung cấp chức năng chung.Nhấn mạnh sự trừu tượng và chỉ định một hợp đồng.
Trường hợp sử dụngHữu ích cho việc tạo hệ thống phân cấp của các lớp liên quan với các thuộc tính và hành vi được chia sẻ.Hữu ích cho việc xác định các hợp đồng đảm bảo các lớp triển khai cung cấp các hành vi cụ thể.
Ví dụabstract class Shape { abstract double area(); }interface Drawable { void draw(); }
Kịch bảnHữu ích khi bạn muốn cung cấp một lớp cơ sở chung với một số hành vi mặc định nhưng để lại các phương thức cụ thể được các lớp con triển khai.Hữu ích khi bạn muốn xác định một hợp đồng hoặc tập hợp các hành vi được chia sẻ trên nhiều lớp mà không cần chỉ định một lớp cơ sở chung.

Sự khác biệt chính giữa Lớp trừu tượng và giao diện

Lớp Tóm tắt:

  • Có thể có cả phương thức trừu tượng (chưa thực hiện) và phương thức cụ thể (đã thực hiện).
  • Hỗ trợ kế thừa đơn, nghĩa là một lớp chỉ có thể mở rộng một lớp trừu tượng.
  • Có thể có các hàm tạo để khởi tạo trạng thái đối tượng.
  • Cho phép tạo lớp cơ sở với hành vi mặc định.
  • Cung cấp sự cân bằng giữa tính trừu tượng và chức năng chung.
  • Hữu ích khi tạo hệ thống phân cấp của các lớp liên quan với các thuộc tính và hành vi được chia sẻ.

Giao diện:

  • Chỉ chứa chữ ký phương thức mà không có bất kỳ triển khai nào; tất cả các phương pháp đều hoàn toàn trừu tượng.
  • Hỗ trợ đa kế thừa, nghĩa là một lớp có thể triển khai nhiều giao diện.
  • Không thể có hàm tạo vì giao diện không thể được khởi tạo.
  • Xác định một hợp đồng chỉ định một tập hợp các phương thức mà các lớp triển khai phải cung cấp.
  • Nhấn mạnh tính trừu tượng và chỉ định một tập hợp các hành vi được chia sẻ.
  • Hữu ích cho việc xác định hợp đồng và đảm bảo các lớp tuân thủ các yêu cầu API cụ thể.

Kết luận

Lớp trừu tượng cho phép bạn tạo chức năng mà các lớp con có thể triển khai hoặc ghi đè, trong khi giao diện cho phép bạn nêu nhưng không triển khai chức năng. Trong khi một lớp chỉ có thể mở rộng một lớp trừu tượng, nó có thể thực hiện một số giao diện.

Tài liệu tham khảo

  1. https://dl.acm.org/doi/abs/10.1145/1040305.1040314
  2. https://books.google.com/books?hl=en&lr=&id=8M3F_sSSvWkC&oi=fnd&pg=PR13&dq=+interface+java&ots=Qo15NiH18i&sig=Y6OESYd5a6G709ynnLGB4Ry97yU
chấm 1
Một yêu cầu?

Tôi đã nỗ lực rất nhiều để viết bài đăng trên blog này nhằm cung cấp giá trị cho bạn. Nó sẽ rất hữu ích cho tôi, nếu bạn cân nhắc chia sẻ nó trên mạng xã hội hoặc với bạn bè/gia đình của bạn. CHIA SẺ LÀ ♥️

Hình đại diện của Nidhi

Giới thiệuNidhi

CHÀO! Tôi là Nidhi.

Tại EHL, tất cả đều là những công thức nấu ăn ngon, dễ làm để giải trí thông thường. Vì vậy, hãy đến và cùng tôi đến bãi biển, thư giãn và thưởng thức đồ ăn.

Bình luận

Chúng tôi sẽ không công khai email của bạn. Các ô đánh dấu * là bắt buộc *