OOP: So sánh Abstract Class và Interface

Mọi người cho em hỏi sự khác biệt gữa Abstract class và Interface? Tại sao cần sử dụng interface trong khi có thể tạo Abstract class và implement các method trong class con?

Được hỏi 5 tháng trước
Bình chọn bởi Khánh Duy, Torrest Vũ, Ngô Thanh Hải, Duc Nguyen, Đăng Duy, Hoàng Giang, Tony Huynh, Hoàng Giang, Thủy Ruby, Tân Lê

Abstract class khác interface ở chỗ

  • Abs Class:
    • có ít nhất 1 phương thức abstract trong nó, tức là có thể chứa các phương thức thường và phương thức abstract,
    • các phương thức này có thể là private, protected, public, hoặc default (riêng abs method thì ko có private)
  • interface: các phương thức đều là public abstract

Abstract class và interface đều thể hiện tính đa hình ở lập trình hướng đối tượng, nhưng có cách sử dụng khác nhau:

  • Abstract class:
    • sử dụng làm class parent (lớp cha), khai báo biến (thuộc tính) và cài đặt các phương thức (hành vi) giống nhau. Các thuộc tính/hành vi riêng biệt sẽ được cài đặt ở sub class (lớp con)
  • interface: Sử dụng để định kiểu đối tượng, nhằm che giấu đi phần code được implement
Trả lời 5 tháng trước

Viết Trả Lời: