2008-10-27 38 views
18

Sử dụng chính xác lớp Tóm tắt là gì? Không thể làm những điều tương tự trong một lớp bình thường vì nó là một lớp trừu tượng?Sử dụng chính xác lớp Tóm tắt

+0

Xem: http://stackoverflow.com/questions/56867/interface-vs-base-class –

+0

Hãy xem [Mẫu phương pháp thiết kế mẫu] (http://sourcemaking.com/design_patterns/template_method) Tôi nghĩ lớp trừu tượng là không thể thay thế ở đó. – rafek

Trả lời

19

Một lớp trừu tượng được sử dụng khi bạn có một số chức năng cơ bản mà bạn muốn lớp con kế thừa, nhưng sẽ không có ý nghĩa khi khởi tạo lớp cơ sở. Ví dụ, nếu bạn có một cái gì đó giống như một lớp cơ sở hình dạng, bạn có thể có một số thực hiện được xây dựng trong đó có thể được sử dụng bởi các lớp con cũng như các phương thức giao diện mà bạn muốn các lớp con thực hiện. Tuy nhiên, nó có thể sẽ không có ý nghĩa để tạo ra một đối tượng Shape. Lớp trừu tượng cung cấp cho bạn chức năng này. Một ví dụ tuyệt vời khác về sử dụng lớp trừu tượng là abstract factory pattern.

24

Sử dụng lớp trừu tượng để cung cấp một số triển khai cụ thể nhưng không cho phép khởi tạo. Bạn luôn có thể khởi tạo một lớp học bình thường mà không có ý nghĩa nếu nó không thể đứng một mình. Đồng thời, một giao diện có thể không đủ nếu có triển khai cụ thể giống hệt nhau trong tất cả các lớp triển khai thực hiện. Một lớp trừu tượng chỉ là đủ.

  • Interface: Hợp đồng mà thôi, không thực hiện, không có instantiation
  • Abstract class: hợp đồng, một số thực hiện, không có instantiation
  • Class: hợp đồng, thực hiện, instantiation
+0

làm thế nào tôi có thể hợp đồng trong một thứ ba, lớp học. vì hợp đồng có nghĩa là khai báo phương thức đó, có nghĩa là "trừu tượng". Và trình biên dịch buộc phải chuyển đổi thành lớp trừu tượng Đó là lý do tại sao hợp đồng có thể có trong lớp bình thường. Nếu logic của tôi là sai, xin vui lòng mke tôi chính xác. – devsda

1

Không giống như các lớp học thường xuyên, abstract các lớp có thể chứa các phương thức abstract. Họ hành động giống như các thành viên giao diện.

Trong khi đó, họ có thể làm chỉ là về tất cả mọi thứ khác mà các lớp học thường xuyên có thể làm: họ có thể thực hiện phương pháp này, chứa các lĩnh vực & loại lồng nhau, xuất phát từ một lớp khác vv

5

lớp thường xuyên yêu cầu bạn phải cung cấp triển khai cho tất cả phương pháp.
Giao diện yêu cầu bạn phải không cung cấp mọi triển khai cho tất cả các phương pháp.

Lớp trừu tượng là loại duy nhất của lớp cho phép cả hai có phương pháp chứa triển khai và có phương pháp không cung cấp triển khai nhưng yêu cầu lớp kế thừa để cung cấp.

Thực tế là bạn được phép thêm các phương thức mà không cần triển khai là lý do bạn không thể khởi tạo lớp trừu tượng: bạn chỉ có thể khởi tạo một cái gì đó có triển khai cho tất cả các phương thức của nó.

Các vấn đề liên quan