Lớp trừu tượng vs Giao diện
Lớp trừu tượng và Giao diện là hai cấu trúc hướng đối tượng được tìm thấy trong nhiều ngôn ngữ lập trình hướng đối tượng như Java. Lớp trừu tượng có thể được coi là một phiên bản trừu tượng của lớp thông thường (cụ thể), trong khi một giao diện có thể được coi là một phương tiện để thực hiện hợp đồng. Lớp trừu tượng là một lớp không thể được khởi tạo nhưng có thể được mở rộng. Giao diện là một loại phải được thực hiện bởi các lớp khác. Trong Java, các lớp Trừu tượng được khai báo bằng từ khóa Trừu tượng, trong khi từ khóa giao diện được sử dụng để xác định giao diện.
Một lớp trừu tượng là gì?
Thông thường, các lớp Trừu tượng, còn được gọi là Các lớp cơ sở trừu tượng (ABC), không thể được khởi tạo (một thể hiện của lớp đó không thể được tạo). Vì vậy, các lớp Trừu tượng chỉ có ý nghĩa nếu ngôn ngữ lập trình hỗ trợ kế thừa (khả năng tạo các lớp con từ việc mở rộng một lớp). Các lớp trừu tượng thường đại diện cho một khái niệm hoặc thực thể trừu tượng với một phần hoặc không thực hiện. Do đó, các lớp Trừu tượng đóng vai trò là các lớp cha mà từ đó các lớp con được dẫn xuất để lớp con sẽ chia sẻ các tính năng chưa hoàn chỉnh của lớp cha và chức năng có thể được thêm vào để hoàn thành chúng.
Các lớp trừu tượng có thể chứa các phương thức Trừu tượng. Các lớp con mở rộng một lớp trừu tượng có thể thực hiện các phương thức Trừu tượng (được kế thừa) này. Nếu lớp con thực hiện tất cả các phương thức Trừu tượng như vậy, thì đó là một lớp cụ thể. Nhưng nếu không, lớp con cũng trở thành lớp Trừu tượng. Tất cả điều này có nghĩa là, khi lập trình viên chỉ định một lớp là Tóm tắt, cô ấy nói rằng lớp đó sẽ không hoàn chỉnh và nó sẽ có các phần tử cần được hoàn thành bởi các lớp con kế thừa. Đây là một cách hay để tạo hợp đồng giữa hai lập trình viên, giúp đơn giản hóa các nhiệm vụ trong phát triển phần mềm. Lập trình viên, người viết mã để kế thừa, cần tuân theo chính xác các định nghĩa phương thức (nhưng tất nhiên có thể có cách thực hiện của riêng cô ấy).
Giao diện là gì?
Giao diện là một loại trừu tượng được sử dụng để chỉ định một hợp đồng nên được thực hiện bởi các lớp, thực hiện giao diện đó. Từ khóa giao diện được sử dụng để xác định giao diện và từ khóa Implements được sử dụng để triển khai giao diện theo một lớp (theo ngôn ngữ lập trình Java). Thông thường, một giao diện sẽ chỉ chứa chữ ký phương thức và khai báo không đổi. Bất kỳ giao diện nào thực hiện một giao diện cụ thể sẽ thực hiện tất cả các phương thức được định nghĩa trong giao diện hoặc nên được khai báo là một lớp trừu tượng. Trong Java, loại tham chiếu đối tượng có thể được định nghĩa là một loại giao diện. Nhưng đối tượng đó phải là null hoặc nên giữ một đối tượng của một lớp, thực hiện giao diện cụ thể đó. Sử dụng từ khóa Implements trong Java, bạn có thể triển khai nhiều giao diện cho một lớp.
Sự khác biệt giữa lớp trừu tượng và giao diện?
Các lớp trừu tượng thường đại diện cho một khái niệm trừu tượng hoặc một thực thể có một phần hoặc không thực hiện. Mặt khác, một giao diện là một loại trừu tượng được sử dụng để chỉ định một hợp đồng nên được thực hiện bởi các lớp. Các lớp trừu tượng nên được kế thừa (hoặc mở rộng), trong khi các giao diện nên được thực hiện. Các lớp trừu tượng có thể chứa các phương thức trừu tượng, trong khi một giao diện chỉ nên chứa các phương thức trừu tượng. Các lớp trừu tượng có thể chứa bất kỳ biến nào, nhưng Giao diện chỉ có thể định nghĩa các hằng. Một lớp không thể kế thừa từ nhiều hơn một lớp trừu tượng nhưng có thể thực hiện nhiều giao diện. Một giao diện không thể thực hiện giao diện khác. Tuy nhiên, một giao diện có thể mở rộng một lớp.