Abstract Class là gì? Hướng dẫn phân biệt Abstract Class và Interface

Lập trình hướng đối tượng là một khái niệm quen thuộc đối với các lập trình viên. Tuy vậy, bạn có thực sự hiểu về Abstract Class là gì hay không? Hiện tại, có khá nhiều bạn chưa thực sự hiểu rõ về bản chất của Abstract Class là gì và thường nhầm lẫn với Interface. Nếu bạn cũng đang tìm hiểu về khái niệm này, hãy cùng topviecit.vn theo dõi ngay bài viết dưới đây.

Tìm hiểu về Abstract Class là gì?

Để hiểu về Abstract Class là gì, bạn có thể tham khảo ngay khái niệm cũng như ví dụ của Abstract Class ngay sau đây:

Abstract Class là gì?

Abstract Class – lớp trừu tượng, được hiểu là một lớp trong lập trình hướng đối tượng OOP. Abstract Class sẽ khai báo 1 hoặc nhiều method trừu tượng trong OOP. Có thể gồm method cụ thể hoặc method trừu tượng. Đối với Abstract Class 1 lớp thường sẽ là method trừu tượng.

>>>Xem thêm: Khám phá những câu hỏi phỏng vấn lập trình viên hay gặp nhất

Tìm hiểu về Abstract Class là gì?Tìm hiểu về Abstract Class là gì?

Trong quá trình thực hiện OOP, 1 method trừu tượng trong Abstract Class sẽ là một method được khai báo không có triển khai. Một Abstract Class sẽ không thể tạo đối tượng được nhưng nó sẽ có nhiều lớp con khác. Khi một class trừu tượng nhiều lớp con, những lớp này sẽ cung cấp triển khai cho các method trừu tượng của lớp cha.

Trường hợp cần sử dụng Abstract Class

Để hiểu hơn về Abstract Class là gì, chắc hẳn bạn sẽ thắc mắc trường hợp nào nên sử dụng Abstract Class?

Trong quá trình lập trình hướng đối tượng, bạn có thể sẽ vẽ các đường như hình chữ nhật, hình tròn, đường cong Bezier, đường kẻ,… Những đối tượng này có tính chất nhất định như vị trí, màu trong, màu đường viền, định hướng,… Chúng cũng sẽ có những hành vi như quay, di chuyển, vẽ, điều chỉnh kích thước,…

Những hành vi, tính chất này thường sẽ giống nhau. Một số trường hợp khác sẽ cần phải điều chỉnh kích thước, vẽ. Những trường hợp này bạn sẽ cần phải sử dụng đến Abstract Class để thực hiện nó.

Sự khác nhau của Abstract Class và Interface

Một trong những vấn đề nhiều bạn thường gặp phải khi tìm hiểu về Abstract Class là gì đó chính là nhầm lẫn nó với Interface. Tuy nhiên, đây là 2 khái niệm khác nhau. Bạn có thể tham khảo một số đặc điểm khác nhau như sau:

Khác nhau về khái niệm

Đầu tiên, cần phải so sánh về điểm khác nhau ở khái niệm của Interface và Abstract Class là gì. Cụ thể:

  • Abstract Class: Là lớp trừu tượng, có thể riêng hoặc bao gồm cả method trừu tượng hoặc cụ thể.
  • Interface: Là một khuôn mẫu – template cố định. Interface không phải là lớp đối tượng như Abstract Class. Phương thức Interface sẽ bắt buộc toàn bộ là phương thức trừu tượng. Cụ thể hơn, những phương thức Interface có khả năng là public.

>>>Xem thêm: Khám phá những câu hỏi phỏng vấn lập trình viên hay gặp nhất

Khái niệm của Abstract Class và Interface sẽ khác nhauKhái niệm của Abstract Class và Interface sẽ khác nhau

Khác nhau về đặc điểm

Bên cạnh khái niệm, Abstract Class và Interface còn khác nhau về những đặc điểm như sau:

Abstract Class có những đặc điểm sau:

  • Là một class, chứa phương thức trừu tượng.
  • Các lớp (class) kế thừa một Abstract Class cần phải định nghĩa lại phương thức trừu tượng của nó.
  • Một lớp (class) chỉ có thể kế thừa 1 lớp trừu tượng.
  • Trong Abstract Class sẽ có 2 loại method là method thường và abstract method. Trong đó, abstract method trống không có thực thi, còn method thường sẽ có thực thi.
  • Abstract Class không hỗ trợ đa kế thừa, không thể khởi tạo đối tượng.
  • Phương thức Abstract không cho phép khai báo nội dung, nó chỉ định nghĩa tên, tham số đầu vào.
  • Mức truy cập hàm của Abstract Class phải ở protect hoặc public. Mục đích để lớp kế thừa định nghĩa lại thuộc tính của lớp abstract không được khai báo.

Interface có những đặc điểm như sau:

  • Là một khuôn mẫu, không phải là lớp đối tượng.
  • Để có thể khai báo được Interface, bạn cần dùng từ khóa của Interface thay cho các từ khóa class.
  • Tất cả các hàm của Interface đều được ở dạng khai báo, không được định nghĩa.
  • Interface là cấu trúc trong lập trình hướng đối tượng (OOP), cho phép các lớp (class) có thể implements.
  • Một đối tượng implement thì phải khai báo, định nghĩa được tất cả các hàm có trong interface.
  • Interface không thể khởi tạo được.
  • Các phương thức có trong Interface bắt buộc phải là phương thức trừu tượng.
  • Những phương thức có trong Interface sẽ chỉ được định nghĩa với khả năng public, không được định nghĩa nội dung.
  • Một class có thể implements được nhiều interface. Interface có thể thực hiện extends với nhau.

>>>Xem thêm: Design Pattern Là Gì? Những Lý Do Nên Sử Dụng Design Pattern

Một số điểm giống và khác nhau khác

Bên cạnh những đặc điểm trên, Abstract Class và Interface cũng sẽ có một số điểm khác và giống nhau như sau:

Giống nhau:

  • Không thể thực hiện tạo một biến ở cả Abstract Class và Interface.
  • Cả Abstract Class và Interface đề có tính kế thừa.
  • Nếu là phương thức Abstract sẽ cần phải được khai báo lại trong các lớp (class) con.

Khác nhau:

  • Những phương thức có trong Interview sẽ luôn luôn được hiểu là Abstract.
  • Những phương thức trong Abstract Class có thể được hiểu là Abstract hoặc không phải Abstract.
  • Các phương thức có trong Interface luôn luôn phải ở dạng public. Ngược lại, trong Abstract Class bạn có thể để public, protected hoặc private.

Sự khác nhau của Abstract Class và InterfaceSự khác nhau của Abstract Class và Interface

Hy vọng bài viết trên sẽ giúp bạn hiểu hơn về Abstract Class là gì, ứng dụng được Abstract Class trong công việc của mình. Đừng quên theo dõi các bài viết khác thuộc chuyên mục này để cập nhật thêm các tin tức liên quan đến việc làm công nghệ thông tin.

>>>Xem thêm: Product Backlog là gì? Đặc điểm của một Product Backlog

Hình ảnh: Sưu tầm