2011-01-21 36 views
12

Sự khác biệt giữa Giao diện, lớp trừu tượng, lớp niêm phong, lớp tĩnh và một phần lớp trong C#? Nếu tất cả các lớp có sẵn trong vb.net?Sự khác biệt giữa Giao diện, lớp trừu tượng, lớp niêm phong, lớp tĩnh và một phần lớp trong C#?

+12

Đọc sách hoặc giới thiệu về C#. Hoặc nếu bạn dũng cảm, thông số ECMA. – leppie

+2

@leppie - Thông số kỹ thuật của ECMA rất dễ làm theo ý kiến ​​của tôi. – ChaosPandion

+0

@ChaosPandion: Vâng, tôi đồng ý, nhưng không phải cho người mới làm quen mà không hiểu các khái niệm cơ bản. – leppie

Trả lời

2

Sau đây là sự khác biệt giữa trừu tượng và giao diện:

  1. Các lớp trừu tượng đã khai phương pháp cũng như định nghĩa phương pháp khi các giao diện chỉ có phương pháp kê khai.

  2. Lớp trừu tượng được gọi là lớp trừu tượng từng phần trong khi giao diện được gọi là lớp trừu tượng hoàn toàn.

  3. Tính năng lớp trừu tượng được thừa kế bởi lớp con trong khi các tính năng giao diện phải được triển khai trong quá trình triển khai lớp học.

  4. Lớp trừu tượng hỗ trợ các trình xác định truy cập trong khi giao diện không hỗ trợ trình xác định truy cập.

  5. Lớp trừu tượng có các biến bình thường cũng như các biến không đổi trong khi giao diện không có biến.

  6. Chúng ta có thể viết các hàm tạo trong các lớp trừu tượng trong khi chúng ta không thể viết các hàm tạo trong các giao diện.

+0

"các giao diện không hỗ trợ các thông số truy cập". - Tôi đã sử dụng nội bộ một cách rõ ràng và công khai theo mặc định. –

13
  • Interface: định nghĩa phương pháp duy nhất

  • Tóm tắt lớp: một số triển khai phương pháp, một số phương pháp trừu tượng (phương pháp duy nhất định nghĩa)

  • Sealed lớp: Một lớp học mà từ đó bạn thể không được kế thừa

  • Lớp tĩnh: một lớp chỉ có stati phương pháp c (không có trường hợp tồn tại, tất cả các phương pháp có thể được gọi mà không cần một ví dụ)

  • phần lớp: Một lớp học đó là quy định tại 2 hoặc nhiều định nghĩa lớp riêng biệt trong module khác nhau.

Có, tất cả đều có sẵn trong cả C# và VB, mặc dù VB sử dụng các từ khóa khác nhau trong một số trường hợp.

2

Lớp normal có thể được khởi tạo trong thời gian chạy để tạo thành đối tượng có trường (trường là thuộc tính, hàm, sự kiện, v.v.). Lớp normal cũng có thể được kế thừa/phân lớp.

Thêm một trong các từ khóa bổ sung thay đổi cách hoạt động của lớp học.

  • Thêm public, private, protected thay đổi cách mã khác có thể xem và sử dụng lớp này.
  • Thêm static vào một lớp nghĩa là bạn không thể tạo một cá thể bằng từ khóa mới nhưng bạn chỉ có thể truy cập nó thông qua hàm tĩnh. Ví dụ: String.IsNullOrEmpty().
  • Thêm sealed vào một lớp nghĩa là không có lớp nào khác có thể kế thừa lớp 'bị niêm phong'.

Giao diện là contracts cho biết lớp triển khai sẽ cung cấp một số chức năng. Giao diện IDisposable cho biết tất cả các lớp đang triển khai nó sẽ có chức năng Dispose.

0

Trong lớp trừu tượng có thể cung cấp nhiều chức năng hơn mà không ảnh hưởng đến lớp con. Trong giao diện, nếu chúng ta thêm bất kỳ phương thức nào vào giao diện thì nó sẽ ảnh hưởng đến tất cả các lớp con.

+1

Tôi nghĩ bạn nên xây dựng thêm bài viết của mình để đảm bảo nó cung cấp câu trả lời đúng cho OP. Ngoài ra, hãy xem Câu Hỏi Thường Gặp của chúng tôi: http://stackoverflow.com/faq. Chúc may mắn. – ForceMagic

3

Tôi đoán liên kết sau sẽ hữu ích cho bạn.

http://letschattechnology.com/interface-vs-abstract-classes/

sự khác biệt logic cơ bản là bạn tạo lớp trừu tượng khi có một mối quan hệ giữa hai lớp đó sẽ kế thừa lớp trừu tượng và bạn tạo giao diện cho các lớp mà không liên quan đến nhau nhưng có một số chức năng chung.

+0

Có ai khác nhấp vào liên kết này không ?? Nó đã không đưa tôi đến bất cứ điều gì liên quan đến mã ... là một liên kết khá nghịch ngợm đối với tôi lol – fifamaniac04

+1

@ fifamaniac04: Tôi xin lỗi, liên kết đã thay đổi. Tôi đã cập nhật liên kết. Bạn sẽ có thể xem bài đăng đó ngay bây giờ. – Sumit

39
  • lớp trừu tượng
    nên được sử dụng khi có một IS-Một mối quan hệ và không có trường hợp nên được phép tạo ra từ đó lớp trừu tượng. Ví dụ: Động vật là lớp cơ sở trừu tượng, nơi có thể bắt nguồn từ động vật cụ thể, ví dụ: Ngựa, Lợn, v.v. Bằng cách làm cho Bản tóm tắt động vật không được phép tạo một phiên bản Động vật.

  • giao diện
    Một giao diện nên được sử dụng để thực hiện chức năng trong một lớp học. Giả sử chúng ta muốn một con ngựa để có thể nhảy, một giao diện IJumping có thể được tạo ra. Bằng cách thêm giao diện này vào Horse, tất cả các phương thức trong IJumping sẽ được thực hiện. Trong IJumping chính nó chỉ các khai báo (ví dụ: StartJump và EndJump được định nghĩa), trong Horse, việc triển khai thực hiện hai phương thức này sẽ được thêm vào.

  • kín lớp
    Bằng cách làm cho ngựa kín, nó không phải là có thể kế thừa từ nó, ví dụ tạo các lớp học như Pony hoặc WorkHorse mà bạn muốn được thừa kế từ Ngựa.

  • lớp tĩnh
    Chủ yếu được sử dụng cho các chức năng 'tiện ích'. Giả sử bạn cần một số phương pháp để tính trung bình một số con số được sử dụng trong lớp Ngựa, nhưng bạn không muốn đặt nó vào Ngựa vì nó không liên quan và nó cũng không liên quan đến động vật, bạn có thể tạo ra một lớp có loại phương pháp này. Bạn không cần một cá thể của lớp tiện ích như vậy.

  • partial class
    Một partial class là gì khác hơn là tách các tập tin của một lớp thành nhiều file nhỏ hơn. Lý do để làm điều này có thể là chỉ chia sẻ một phần mã nguồn cho người khác. Nếu lý do là các tập tin được quá lớn, suy nghĩ về tách lớp trong lớp học nhỏ hơn đầu tiên.

+1

tuyệt vời và rất dễ dàng. không thể tìm thấy dễ dàng như vậy. cảm ơn rất nhiều –

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