Một lớp trừu tượng là một lớp chỉ nhằm mục đích là một lớp cơ sở của các lớp khác. Công cụ sửa đổi 'trừu tượng' được sử dụng để tạo một lớp trừu tượng. Một sửa đổi trừu tượng chỉ ra rằng có một số triển khai còn thiếu cần được thực hiện trong lớp có nguồn gốc từ nó. Lớp trừu tượng có thể có một thành viên trừu tượng và không trừu tượng. Một lớp trừu tượng nên có ít nhất một phương thức trừu tượng, nếu không, không có cách sử dụng khai báo lớp đó là 'trừu tượng'.
Ví dụ về lớp trừu tượng trong C #:
lớp trừu tượng MyCircle {trừu tượng int int Area (); } Lớp MyArea: MyCircle {công khai ghi đè int Area () {return side * side; .....}}1 2 3 4 5 6 7 8 9 10 11 | lớp trừu tượng MyCircle {trừu tượng int int Area (); } Lớp MyArea: MyCircle {công khai ghi đè int Area () {return side * side; . . . . . }} |
Như trong ví dụ trên, phương thức trừu tượng 'Khu vực' bên trong lớp MyCircle bị ghi đè trong lớp dẫn xuất MyArea.
Giao diện
Một giao diện chỉ chứa khai báo của các thành viên bao gồm các phương thức, thuộc tính, sự kiện hoặc bộ chỉ mục. Nó không chứa việc thực hiện các thành viên này. Một lớp hoặc struct thực hiện giao diện, phải cung cấp định nghĩa về các phương thức được khai báo trong giao diện. Điều đó có nghĩa là một giao diện cung cấp một cấu trúc tiêu chuẩn mà lớp dẫn xuất cần phải tuân theo.
Ví dụ về Giao diện trong C #:
sử dụng System.Collections.Generic; sử dụng System.Linq; sử dụng System.Text; không gian tên MyName {giao diện công cộng MyData {void getdata (); void showdata (); } lớp công khai NameData: MyData {public double getdata () {tên chuỗi; Console.WriteLine ("Nhập tên:"); tên = Bảng điều khiển.ReadLine (); } void void showdata () {Console.WriteLine ("Tên tôi là:", tên); }}}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | sử dụng hệ thống. Bộ sưu tập. Chung ; sử dụng hệ thống. Linq; sử dụng hệ thống. Bản văn ; không gian tên MyName {giao diện công cộng MyData {void getdata (); void showdata (); } lớp công khai NameData: MyData {public double getdata () {tên chuỗi; Bảng điều khiển. WriteLine ("Nhập tên:"); tên = Bảng điều khiển. ĐọcLine (); } void void showdata () {Bảng điều khiển. WriteLine ("Tên tôi là:", tên); }}} |
Như trong ví dụ trên, giao diện MyData có hai khai báo phương thức getdata () và showdata (). Lớp NameData đang thực hiện giao diện này sẽ đưa ra định nghĩa về các phương thức được khai báo trong giao diện MyData.
Sự khác biệt giữa lớp trừu tượng và giao diện
- Một lớp trừu tượng có thể có các thành viên trừu tượng cũng như không trừu tượng. Nhưng, trong một giao diện, tất cả các thành viên đều hoàn toàn trừu tượng và phải được ghi đè trong lớp dẫn xuất.
- Một lớp có thể kế thừa một số giao diện nhưng chỉ có một lớp trừu tượng.
- Một lớp trừu tượng có thể chứa các phương thức có hoặc có định nghĩa. Nhưng, một giao diện chỉ có thể chứa chữ ký phương thức.
- Một lớp trừu tượng hoàn toàn có thể, một phần hoặc không được thực hiện, nhưng một giao diện nên được thực hiện đầy đủ, tức là, tất cả các thành viên phải được định nghĩa trong lớp dẫn xuất.
- Một giao diện không thể chứa các sửa đổi truy cập, nhưng một lớp trừu tượng có thể có nó cho các chức năng, thuộc tính hoặc sự kiện.