112

Trong C #, khi nào bạn nên sử dụng giao diện và khi nào bạn nên sử dụng các lớp trừu tượng? Điều gì có thể là yếu tố quyết định?

|
129

Những lợi thế của một lớp trừu tượng là:

  • Khả năng chỉ định triển khai mặc định của các phương thức
  • Đã thêm kiểm tra bất biến cho các chức năng
  • Có thêm một chút kiểm soát trong cách gọi các phương thức "giao diện"
  • Khả năng cung cấp hành vi liên quan hoặc không liên quan đến giao diện "miễn phí"

Các giao diện chỉ đơn thuần là dữ liệu thông qua hợp đồng và không có các tính năng này. Tuy nhiên, chúng thường linh hoạt hơn vì một loại chỉ có thể được bắt nguồn từ một lớp, nhưng có thể thực hiện bất kỳ số lượng giao diện nào.

|
  • 1

    @JaredPar: Tôi đoán là không khuyến khích trả lời các câu hỏi trùng lặp (btw, tôi không phải là người đánh giá thấp bạn)

    – Hoàng Anh Dũng 13:34:25 14/04/2009
  • 1

    @Brann, tôi không may thấy hành vi đó trước đây. Có vẻ như sẽ có ý nghĩa hơn khi sử dụng phiếu bầu xuống trên OP. Trách nhiệm của họ là tìm kiếm bản sao.

    – Vũ Hồng Sơn 13:37:09 14/04/2009
  • 1

    Tôi ngạc nhiên câu trả lời này có rất nhiều câu trả lời và là câu trả lời được chấp nhận. Nó dường như cho thấy sự thiên vị của người trả lời ("lợi thế của lớp trừu tượng" theo sau là bốn viên đạn lợi thế theo sau là "giao diện chỉ" theo sau là một "tuy nhiên" có lợi cho giao diện) đối với các lớp trừu tượng hơn là thực sự mô tả sự khác biệt giữa các lớp và giao diện trừu tượng. Tôi không có ý định tấn công người trả lời nhưng chắc chắn câu hỏi này nên được nêu theo cách khách quan hơn để thực hiện công lý tốt nhất cho câu hỏi.

    – Ngô Bích Hiền 00:36:29 27/09/2014
  • 1

    @Matt câu trả lời cung cấp tất cả các sự kiện có liên quan cho cả các lớp và giao diện trừu tượng, vậy tại sao nó không khách quan? Tôi nghĩ đó là một câu trả lời rất tốt.

    – Dương Quang Minh 12:45:58 10/10/2014
  • 1

    Câu trả lời của @Guffa là một câu trả lời tốt hơn nhiều vì nó giải thích chính xác khi nào nên sử dụng mỗi câu.

    – Hồ Hồng Linh 23:15:11 26/08/2015
77

Các lớp và giao diện trừu tượng khác nhau về mặt ngữ nghĩa, mặc dù cách sử dụng của chúng có thể trùng nhau.

Một lớp trừu tượng thường được sử dụng làm cơ sở xây dựng cho các lớp tương tự. Việc thực hiện phổ biến cho các lớp có thể nằm trong lớp trừu tượng.

Một giao diện thường được sử dụng để xác định khả năng cho các lớp, trong đó các lớp không nhất thiết phải giống nhau.

|
7

Một điều khác cần xem xét là, vì không có nhiều kế thừa, nếu bạn muốn một lớp có thể thực hiện / kế thừa từ giao diện / lớp trừu tượng của bạn, nhưng kế thừa từ một lớp cơ sở khác, hãy sử dụng một giao diện.

|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.